Should be all vendor specific device extensions enabled when I create a VkDevice object?

I want to begin Vulkan programming for the purpose of education (and for fun). Have a question to device specific extensions. My old AMD graphic card (Radeon RX580) has the following AMD extensions as example:

0x00000001 VK_AMD_buffer_marker
0x00000001 VK_AMD_device_coherent_memory
0x00000002 VK_AMD_draw_indirect_count
0x00000001 VK_AMD_gcn_shader
0x00000001 VK_AMD_memory_overallocation_behavior
0x00000001 VK_AMD_mixed_attachment_samples
0x00000001 VK_AMD_rasterization_order
0x00000001 VK_AMD_shader_ballot
0x00000002 VK_AMD_shader_core_properties
0x00000001 VK_AMD_shader_core_properties2
0x00000001 VK_AMD_shader_explicit_vertex_parameter
0x00000001 VK_AMD_shader_fragment_mask
0x00000001 VK_AMD_shader_image_load_store_lod
0x00000001 VK_AMD_shader_trinary_minmax
0x00000001 VK_AMD_texture_gather_bias_lod

Here the extension VK_AMD_gcn_shader as example. As far I know, GCN is AMD’s graphic architecture. Do I need (must be enabled) this extension, if I want use the standard shader’s like Vertex, Fragment and others? Unfortunately VK_AMD_gcn_shader isn’t well documented at the Khronos homepage, so I don’t know when I must enable this extension.

I asked this on SO too, but received negative feedback…

No, Vulkan is an explicit api. You only enable the extension you actually want to use. Blindly enabling all extensions might have negative impact.

1 Like