@@ -42,7 +42,7 @@ struct SPhysicalDeviceFeatures
42
42
// bool textureCompressionBC;
43
43
44
44
bool occlusionQueryPrecise = false ;
45
- // bool pipelineStatisticsQuery; [TODO]
45
+ bool pipelineStatisticsQuery = false ;
46
46
47
47
// [TODO] Always enable ones below, report as limit
48
48
bool vertexPipelineStoresAndAtomics = false ;
@@ -153,25 +153,25 @@ struct SPhysicalDeviceFeatures
153
153
154
154
// bool imagelessFramebuffer; // or VK_KHR_imageless_framebuffer // [FUTURE TODO]
155
155
156
- bool uniformBufferStandardLayout = false ; // or VK_KHR_uniform_buffer_standard_layout
156
+ bool uniformBufferStandardLayout = false ; // or VK_KHR_uniform_buffer_standard_layout
157
157
158
158
bool shaderSubgroupExtendedTypes = false ; // or VK_KHR_shader_subgroup_extended_types
159
159
160
- bool separateDepthStencilLayouts = false ; // or VK_KHR_separate_depth_stencil_layouts
160
+ bool separateDepthStencilLayouts = false ; // or VK_KHR_separate_depth_stencil_layouts
161
161
162
162
// bool timelineSemaphore; // or VK_KHR_timeline_semaphore // [FUTURE TODO] won't expose for a long time
163
163
164
164
// or VK_KHR_buffer_device_address:
165
165
bool bufferDeviceAddress = false ;
166
166
// bool bufferDeviceAddressCaptureReplay; // [DO NOT EXPOSE] for capture tools not engines
167
- bool bufferDeviceAddressMultiDevice = false ;
167
+ bool bufferDeviceAddressMultiDevice = false ;
168
168
169
169
// or VK_KHR_vulkan_memory_model
170
- bool vulkanMemoryModel = false ;
171
- bool vulkanMemoryModelDeviceScope = false ;
172
- bool vulkanMemoryModelAvailabilityVisibilityChains = false ;
170
+ bool vulkanMemoryModel = false ;
171
+ bool vulkanMemoryModelDeviceScope = false ;
172
+ bool vulkanMemoryModelAvailabilityVisibilityChains = false ;
173
173
174
- bool subgroupBroadcastDynamicId = false ; // if Vulkan 1.2 is supported
174
+ bool subgroupBroadcastDynamicId = false ; // if Vulkan 1.2 is supported
175
175
176
176
177
177
@@ -186,8 +186,8 @@ struct SPhysicalDeviceFeatures
186
186
// [DO NOT EXPOSE] ever
187
187
// bool privateData; // or VK_EXT_private_data
188
188
189
- bool shaderDemoteToHelperInvocation = false ; // or VK_EXT_shader_demote_to_helper_invocation
190
- bool shaderTerminateInvocation = false ; // or VK_KHR_shader_terminate_invocation
189
+ bool shaderDemoteToHelperInvocation = false ; // or VK_EXT_shader_demote_to_helper_invocation
190
+ bool shaderTerminateInvocation = false ; // or VK_KHR_shader_terminate_invocation
191
191
192
192
// or VK_EXT_subgroup_size_control
193
193
bool subgroupSizeControl = false ;
@@ -205,9 +205,7 @@ struct SPhysicalDeviceFeatures
205
205
// [DO NOT EXPOSE] EVIL
206
206
// bool dynamicRendering; // or VK_KHR_dynamic_rendering
207
207
208
- bool shaderIntegerDotProduct = false ; // or VK_KHR_shader_integer_dot_product
209
- // bool maintenance4; // [DO NOT EXPOSE] doesn't make sense
210
-
208
+ bool shaderIntegerDotProduct = false ; // or VK_KHR_shader_integer_dot_product
211
209
212
210
213
211
@@ -263,7 +261,7 @@ struct SPhysicalDeviceFeatures
263
261
// bool minLod;
264
262
265
263
/* IndexTypeUint8FeaturesEXT */ /* VK_EXT_index_type_uint8 */
266
- bool indexTypeUint8 = false ;
264
+ bool indexTypeUint8 = false ;
267
265
268
266
// [DO NOT EXPOSE] this extension is dumb, if we're recording that many draws we will be using Multi Draw INDIRECT which is better supported
269
267
/* MultiDrawFeaturesEXT */ /* VK_EXT_multi_draw */
@@ -292,36 +290,36 @@ struct SPhysicalDeviceFeatures
292
290
// bool transformFeedbackPreservesProvokingVertex;
293
291
294
292
/* ShaderAtomicFloatFeaturesEXT */ /* VK_EXT_shader_atomic_float */
295
- bool shaderBufferFloat32Atomics = false ;
296
- bool shaderBufferFloat32AtomicAdd = false ;
297
- bool shaderBufferFloat64Atomics = false ;
298
- bool shaderBufferFloat64AtomicAdd = false ;
299
- bool shaderSharedFloat32Atomics = false ;
300
- bool shaderSharedFloat32AtomicAdd = false ;
301
- bool shaderSharedFloat64Atomics = false ;
302
- bool shaderSharedFloat64AtomicAdd = false ;
303
- bool shaderImageFloat32Atomics = false ;
304
- bool shaderImageFloat32AtomicAdd = false ;
305
- bool sparseImageFloat32Atomics = false ;
306
- bool sparseImageFloat32AtomicAdd = false ;
293
+ bool shaderBufferFloat32Atomics = false ;
294
+ bool shaderBufferFloat32AtomicAdd = false ;
295
+ bool shaderBufferFloat64Atomics = false ;
296
+ bool shaderBufferFloat64AtomicAdd = false ;
297
+ bool shaderSharedFloat32Atomics = false ;
298
+ bool shaderSharedFloat32AtomicAdd = false ;
299
+ bool shaderSharedFloat64Atomics = false ;
300
+ bool shaderSharedFloat64AtomicAdd = false ;
301
+ bool shaderImageFloat32Atomics = false ;
302
+ bool shaderImageFloat32AtomicAdd = false ;
303
+ bool sparseImageFloat32Atomics = false ;
304
+ bool sparseImageFloat32AtomicAdd = false ;
307
305
308
306
/* ShaderAtomicFloat2FeaturesEXT */ /* VK_EXT_shader_atomic_float2 */
309
- bool shaderBufferFloat16Atomics = false ;
310
- bool shaderBufferFloat16AtomicAdd = false ;
311
- bool shaderBufferFloat16AtomicMinMax = false ;
312
- bool shaderBufferFloat32AtomicMinMax = false ;
313
- bool shaderBufferFloat64AtomicMinMax = false ;
314
- bool shaderSharedFloat16Atomics = false ;
315
- bool shaderSharedFloat16AtomicAdd = false ;
316
- bool shaderSharedFloat16AtomicMinMax = false ;
317
- bool shaderSharedFloat32AtomicMinMax = false ;
318
- bool shaderSharedFloat64AtomicMinMax = false ;
319
- bool shaderImageFloat32AtomicMinMax = false ;
320
- bool sparseImageFloat32AtomicMinMax = false ;
307
+ bool shaderBufferFloat16Atomics = false ;
308
+ bool shaderBufferFloat16AtomicAdd = false ;
309
+ bool shaderBufferFloat16AtomicMinMax = false ;
310
+ bool shaderBufferFloat32AtomicMinMax = false ;
311
+ bool shaderBufferFloat64AtomicMinMax = false ;
312
+ bool shaderSharedFloat16Atomics = false ;
313
+ bool shaderSharedFloat16AtomicAdd = false ;
314
+ bool shaderSharedFloat16AtomicMinMax = false ;
315
+ bool shaderSharedFloat32AtomicMinMax = false ;
316
+ bool shaderSharedFloat64AtomicMinMax = false ;
317
+ bool shaderImageFloat32AtomicMinMax = false ;
318
+ bool sparseImageFloat32AtomicMinMax = false ;
321
319
322
320
/* ShaderImageAtomicInt64FeaturesEXT */ /* VK_EXT_shader_image_atomic_int64 */
323
- bool shaderImageInt64Atomics = false ;
324
- bool sparseImageInt64Atomics = false ;
321
+ bool shaderImageInt64Atomics = false ;
322
+ bool sparseImageInt64Atomics = false ;
325
323
326
324
// [DO NOT EXPOSE] always enable if we can
327
325
/* TexelBufferAlignmentFeaturesEXT */ /* VK_EXT_texel_buffer_alignment */
@@ -391,15 +389,15 @@ struct SPhysicalDeviceFeatures
391
389
/* ShaderAtomicInt64FeaturesKHR */ /* VK_KHR_shader_atomic_int64 */ /* MOVED TO Vulkan 1.2 Core */
392
390
393
391
/* ShaderClockFeaturesKHR */ /* VK_KHR_shader_clock */
394
- bool shaderDeviceClock = false ;
392
+ bool shaderDeviceClock = false ;
395
393
396
394
/* VK_KHR_shader_draw_parameters */ /* MOVED TO Vulkan 1.1 Core */
397
395
/* VK_KHR_shader_float16_int8 */ /* MOVED TO Vulkan 1.2 Core */
398
396
/* VK_KHR_shader_integer_dot_product */ /* MOVED TO Vulkan 1.3 Core */
399
397
/* VK_KHR_shader_subgroup_extended_types */ /* MOVED TO Vulkan 1.2 Core */
400
398
401
399
/* ShaderSubgroupUniformControlFlowFeaturesKHR */ /* VK_KHR_shader_subgroup_uniform_control_flow */
402
- bool shaderSubgroupUniformControlFlow = false ;
400
+ bool shaderSubgroupUniformControlFlow = false ;
403
401
404
402
/* VK_KHR_shader_terminate_invocation */ /* MOVED TO Vulkan 1.3 Core */
405
403
/* VK_KHR_synchronization2 */ /* MOVED TO Vulkan 1.3 Core */
@@ -418,29 +416,29 @@ struct SPhysicalDeviceFeatures
418
416
/* VK_KHX_multiview */ /* see VK_KHR_multiview */ /* MOVED TO Vulkan 1.1 Core */
419
417
420
418
/* ComputeShaderDerivativesFeaturesNV */ /* VK_NV_compute_shader_derivatives */
421
- bool computeDerivativeGroupQuads = false ;
422
- bool computeDerivativeGroupLinear = false ;
419
+ bool computeDerivativeGroupQuads = false ;
420
+ bool computeDerivativeGroupLinear = false ;
423
421
424
422
/* CooperativeMatrixFeaturesNV */ /* VK_NV_cooperative_matrix */
425
423
bool cooperativeMatrix = false ;
426
424
bool cooperativeMatrixRobustBufferAccess = false ;
427
425
428
426
/* RayTracingMotionBlurFeaturesNV */ /* VK_NV_ray_tracing_motion_blur */
429
- bool rayTracingMotionBlur = false ;
430
- bool rayTracingMotionBlurPipelineTraceRaysIndirect = false ;
427
+ bool rayTracingMotionBlur = false ;
428
+ bool rayTracingMotionBlurPipelineTraceRaysIndirect = false ;
431
429
432
430
/* CoverageReductionModeFeaturesNV */ /* VK_NV_coverage_reduction_mode */
433
- bool coverageReductionMode;
431
+ bool coverageReductionMode;
434
432
435
433
/* DeviceGeneratedCommandsFeaturesNV */ /* VK_NV_device_generated_commands */
436
- bool deviceGeneratedCommands = false ;
434
+ bool deviceGeneratedCommands = false ;
437
435
438
436
/* MeshShaderFeaturesNV */ /* VK_NV_mesh_shader */
439
- bool taskShader = false ;
440
- bool meshShader = false ;
437
+ bool taskShader = false ;
438
+ bool meshShader = false ;
441
439
442
440
/* RepresentativeFragmentTestFeaturesNV */ /* VK_NV_representative_fragment_test */
443
- bool representativeFragmentTest = false ;
441
+ bool representativeFragmentTest = false ;
444
442
445
443
/* VK_AMD_mixed_attachment_samples */ /* OR */ /* VK_NV_framebuffer_mixed_samples */
446
444
bool mixedAttachmentSamples = false ;
@@ -465,36 +463,36 @@ struct SPhysicalDeviceFeatures
465
463
// bool variablePointers;
466
464
467
465
// [TODO] add implementation to engine
468
- bool hostQueryReset = false ; // or VK_EXT_host_query_reset
466
+ bool hostQueryReset = false ; // or VK_EXT_host_query_reset
469
467
470
- bool pipelineCreationCacheControl = false ; // or VK_EXT_pipeline_creation_cache_control
468
+ bool pipelineCreationCacheControl = false ; // or VK_EXT_pipeline_creation_cache_control
471
469
472
470
// [TODO] need new commandbuffer methods, etc
473
471
/* ColorWriteEnableFeaturesEXT */ /* VK_EXT_color_write_enable */
474
- bool colorWriteEnable = false ;
472
+ bool colorWriteEnable = false ;
475
473
476
474
// [TODO] now we need API to deal with queries and begin/end conditional blocks
477
475
/* ConditionalRenderingFeaturesEXT */ /* VK_EXT_conditional_rendering */
478
- bool conditionalRendering = false ;
479
- bool inheritedConditionalRendering = false ;
476
+ bool conditionalRendering = false ;
477
+ bool inheritedConditionalRendering = false ;
480
478
481
479
/* DeviceMemoryReportFeaturesEXT */ /* VK_EXT_device_memory_report */
482
- bool deviceMemoryReport = false ;
480
+ bool deviceMemoryReport = false ;
483
481
484
482
/* FragmentDensityMapFeaturesEXT */ /* VK_EXT_fragment_density_map */
485
- bool fragmentDensityMap = false ;
486
- bool fragmentDensityMapDynamic = false ;
487
- bool fragmentDensityMapNonSubsampledImages = false ;
483
+ bool fragmentDensityMap = false ;
484
+ bool fragmentDensityMapDynamic = false ;
485
+ bool fragmentDensityMapNonSubsampledImages = false ;
488
486
489
487
/* FragmentDensityMap2FeaturesEXT */ /* VK_EXT_fragment_density_map2 */
490
- bool fragmentDensityMapDeferred = false ;
488
+ bool fragmentDensityMapDeferred = false ;
491
489
492
490
// [TODO] Investigate later
493
491
/* Image2DViewOf3DFeaturesEXT */ /* VK_EXT_image_2d_view_of_3d */
494
492
// bool image2DViewOf3D;
495
493
// bool sampler2DViewOf3D;
496
494
497
- bool robustImageAccess = false ; // or VK_EXT_image_robustness
495
+ bool robustImageAccess = false ; // or VK_EXT_image_robustness
498
496
499
497
/* InlineUniformBlockFeaturesEXT */ /* VK_EXT_inline_uniform_block */ /* MOVED TO Vulkan 1.3 Core */
500
498
bool inlineUniformBlock = false ;
@@ -503,34 +501,34 @@ struct SPhysicalDeviceFeatures
503
501
// [TODO] this feature introduces new/more pipeline state with VkPipelineRasterizationLineStateCreateInfoEXT
504
502
/* LineRasterizationFeaturesEXT */ /* VK_EXT_line_rasterization */
505
503
// GL HINT (remove when implemented): MULTI_SAMPLE_LINE_WIDTH_RANGE (which is necessary for this) is guarded by !IsGLES || Version>=320 no idea is something enables this or not
506
- bool rectangularLines = false ;
507
- bool bresenhamLines = false ;
508
- bool smoothLines = false ;
504
+ bool rectangularLines = false ;
505
+ bool bresenhamLines = false ;
506
+ bool smoothLines = false ;
509
507
// end of hint
510
- bool stippledRectangularLines = false ;
511
- bool stippledBresenhamLines = false ;
512
- bool stippledSmoothLines = false ;
508
+ bool stippledRectangularLines = false ;
509
+ bool stippledBresenhamLines = false ;
510
+ bool stippledSmoothLines = false ;
513
511
514
512
/* MemoryPriorityFeaturesEXT */ /* VK_EXT_memory_priority */
515
- bool memoryPriority = false ;
513
+ bool memoryPriority = false ;
516
514
517
515
/* Robustness2FeaturesEXT */ /* VK_EXT_robustness2 */
518
- bool robustBufferAccess2 = false ;
519
- bool robustImageAccess2 = false ;
520
- bool nullDescriptor = false ;
516
+ bool robustBufferAccess2 = false ;
517
+ bool robustImageAccess2 = false ;
518
+ bool nullDescriptor = false ;
521
519
522
520
/* PerformanceQueryFeaturesKHR */ /* VK_KHR_performance_query */
523
- bool performanceCounterQueryPools = false ;
524
- bool performanceCounterMultipleQueryPools = false ;
521
+ bool performanceCounterQueryPools = false ;
522
+ bool performanceCounterMultipleQueryPools = false ;
525
523
526
524
/* PipelineExecutablePropertiesFeaturesKHR */ /* VK_KHR_pipeline_executable_properties */
527
- bool pipelineExecutableInfo = false ;
525
+ bool pipelineExecutableInfo = false ;
528
526
529
527
/* Maintenance4FeaturesKHR */ /* VK_KHR_maintenance4 */ /* MOVED TO Vulkan 1.3 Core */
530
528
bool maintenance4 = false ;
531
529
532
530
/* CoherentMemoryFeaturesAMD */ /* VK_AMD_device_coherent_memory */
533
- bool deviceCoherentMemory = false ;
531
+ bool deviceCoherentMemory = false ;
534
532
535
533
/* VK_AMD_buffer_marker */
536
534
bool bufferMarkerAMD = false ;
0 commit comments