{
  "os_unix": 1,
  "os_bsd": 0,
  "os_linux": 1,
  "os_android": 0,
  "os_macosx": 0,
  "os_win": 0,
  "arch_ia32": 0,
  "arch_amd64": 1,
  "arch_arm": 0,
  "arch_aarch64": 0,
  "arch_e2k": 0,
  "arch_ppc64": 0,
  "build_debug": 0,
  "build_opengles": 0,
  "build_datetime": "Apr 17 2025 22:08:08",
  "build_version": "main, 9c560c36af",
  "build_msc": 0,
  "build_gcc": 1302,
  "build_clang": 0,
  "gfx_card": "AMD Radeon R4 Graphics (RADV STONEY)",
  "gfx_drv_ver": "100671496",
  "snd_card": "Built-in Audio Analog Stereo; ",
  "snd_drv_ver": "1.1 ALSOFT 1.23.1",
  "libraries": [
    {
      "name": "sdl",
      "build_version": "2.30.0",
      "runtime_version": "2.30.0",
      "video_backend": "X11",
      "display_count": 1,
      "cpu_count": 2,
      "system_ram": 3279
    },
    {
      "name": "freetype",
      "version": "2.13.2"
    },
    {
      "name": "boost",
      "version": 108300
    },
    {
      "name": "fmt",
      "version": 90100
    },
    {
      "name": "nvtt",
      "build_version": 20100,
      "runtime_version": 20100
    }
  ],
  "renderer_backend": {
    "name": "vulkan",
    "extensions": [
      "VK_AMD_buffer_marker",
      "VK_AMD_device_coherent_memory",
      "VK_AMD_draw_indirect_count",
      "VK_AMD_gcn_shader",
      "VK_AMD_memory_overallocation_behavior",
      "VK_AMD_mixed_attachment_samples",
      "VK_AMD_shader_ballot",
      "VK_AMD_shader_core_properties",
      "VK_AMD_shader_core_properties2",
      "VK_AMD_shader_early_and_late_fragment_tests",
      "VK_AMD_shader_explicit_vertex_parameter",
      "VK_AMD_shader_fragment_mask",
      "VK_AMD_shader_image_load_store_lod",
      "VK_AMD_shader_trinary_minmax",
      "VK_AMD_texture_gather_bias_lod",
      "VK_EXT_4444_formats",
      "VK_EXT_attachment_feedback_loop_dynamic_state",
      "VK_EXT_attachment_feedback_loop_layout",
      "VK_EXT_buffer_device_address",
      "VK_EXT_calibrated_timestamps",
      "VK_EXT_color_write_enable",
      "VK_EXT_conditional_rendering",
      "VK_EXT_custom_border_color",
      "VK_EXT_depth_bias_control",
      "VK_EXT_depth_clamp_zero_one",
      "VK_EXT_depth_clip_control",
      "VK_EXT_depth_clip_enable",
      "VK_EXT_depth_range_unrestricted",
      "VK_EXT_descriptor_buffer",
      "VK_EXT_descriptor_indexing",
      "VK_EXT_device_address_binding_report",
      "VK_EXT_device_fault",
      "VK_EXT_discard_rectangles",
      "VK_EXT_display_control",
      "VK_EXT_dynamic_rendering_unused_attachments",
      "VK_EXT_extended_dynamic_state",
      "VK_EXT_extended_dynamic_state2",
      "VK_EXT_extended_dynamic_state3",
      "VK_EXT_external_memory_acquire_unmodified",
      "VK_EXT_external_memory_dma_buf",
      "VK_EXT_external_memory_host",
      "VK_EXT_global_priority",
      "VK_EXT_global_priority_query",
      "VK_EXT_graphics_pipeline_library",
      "VK_EXT_host_query_reset",
      "VK_EXT_image_2d_view_of_3d",
      "VK_EXT_image_compression_control",
      "VK_EXT_image_robustness",
      "VK_EXT_image_view_min_lod",
      "VK_EXT_index_type_uint8",
      "VK_EXT_inline_uniform_block",
      "VK_EXT_legacy_vertex_attributes",
      "VK_EXT_line_rasterization",
      "VK_EXT_load_store_op_none",
      "VK_EXT_map_memory_placed",
      "VK_EXT_memory_budget",
      "VK_EXT_memory_priority",
      "VK_EXT_multi_draw",
      "VK_EXT_mutable_descriptor_type",
      "VK_EXT_nested_command_buffer",
      "VK_EXT_non_seamless_cube_map",
      "VK_EXT_pci_bus_info",
      "VK_EXT_physical_device_drm",
      "VK_EXT_pipeline_creation_cache_control",
      "VK_EXT_pipeline_creation_feedback",
      "VK_EXT_pipeline_robustness",
      "VK_EXT_primitive_topology_list_restart",
      "VK_EXT_primitives_generated_query",
      "VK_EXT_private_data",
      "VK_EXT_provoking_vertex",
      "VK_EXT_queue_family_foreign",
      "VK_EXT_robustness2",
      "VK_EXT_sample_locations",
      "VK_EXT_sampler_filter_minmax",
      "VK_EXT_scalar_block_layout",
      "VK_EXT_separate_stencil_usage",
      "VK_EXT_shader_atomic_float",
      "VK_EXT_shader_atomic_float2",
      "VK_EXT_shader_demote_to_helper_invocation",
      "VK_EXT_shader_image_atomic_int64",
      "VK_EXT_shader_module_identifier",
      "VK_EXT_shader_object",
      "VK_EXT_shader_replicated_composites",
      "VK_EXT_shader_stencil_export",
      "VK_EXT_shader_subgroup_ballot",
      "VK_EXT_shader_subgroup_vote",
      "VK_EXT_shader_viewport_index_layer",
      "VK_EXT_subgroup_size_control",
      "VK_EXT_swapchain_maintenance1",
      "VK_EXT_texel_buffer_alignment",
      "VK_EXT_tooling_info",
      "VK_EXT_transform_feedback",
      "VK_EXT_vertex_attribute_divisor",
      "VK_EXT_vertex_input_dynamic_state",
      "VK_EXT_ycbcr_image_arrays",
      "VK_GOOGLE_decorate_string",
      "VK_GOOGLE_hlsl_functionality1",
      "VK_GOOGLE_user_type",
      "VK_INTEL_shader_integer_functions2",
      "VK_KHR_16bit_storage",
      "VK_KHR_8bit_storage",
      "VK_KHR_bind_memory2",
      "VK_KHR_buffer_device_address",
      "VK_KHR_calibrated_timestamps",
      "VK_KHR_copy_commands2",
      "VK_KHR_create_renderpass2",
      "VK_KHR_dedicated_allocation",
      "VK_KHR_deferred_host_operations",
      "VK_KHR_depth_stencil_resolve",
      "VK_KHR_descriptor_update_template",
      "VK_KHR_device_group",
      "VK_KHR_draw_indirect_count",
      "VK_KHR_driver_properties",
      "VK_KHR_dynamic_rendering",
      "VK_KHR_dynamic_rendering_local_read",
      "VK_KHR_external_fence",
      "VK_KHR_external_fence_fd",
      "VK_KHR_external_memory",
      "VK_KHR_external_memory_fd",
      "VK_KHR_external_semaphore",
      "VK_KHR_external_semaphore_fd",
      "VK_KHR_format_feature_flags2",
      "VK_KHR_get_memory_requirements2",
      "VK_KHR_global_priority",
      "VK_KHR_image_format_list",
      "VK_KHR_imageless_framebuffer",
      "VK_KHR_incremental_present",
      "VK_KHR_index_type_uint8",
      "VK_KHR_line_rasterization",
      "VK_KHR_load_store_op_none",
      "VK_KHR_maintenance1",
      "VK_KHR_maintenance2",
      "VK_KHR_maintenance3",
      "VK_KHR_maintenance4",
      "VK_KHR_maintenance5",
      "VK_KHR_maintenance6",
      "VK_KHR_maintenance7",
      "VK_KHR_map_memory2",
      "VK_KHR_multiview",
      "VK_KHR_pipeline_executable_properties",
      "VK_KHR_pipeline_library",
      "VK_KHR_present_id",
      "VK_KHR_present_wait",
      "VK_KHR_push_descriptor",
      "VK_KHR_relaxed_block_layout",
      "VK_KHR_sampler_mirror_clamp_to_edge",
      "VK_KHR_sampler_ycbcr_conversion",
      "VK_KHR_separate_depth_stencil_layouts",
      "VK_KHR_shader_atomic_int64",
      "VK_KHR_shader_clock",
      "VK_KHR_shader_draw_parameters",
      "VK_KHR_shader_expect_assume",
      "VK_KHR_shader_float16_int8",
      "VK_KHR_shader_float_controls",
      "VK_KHR_shader_integer_dot_product",
      "VK_KHR_shader_maximal_reconvergence",
      "VK_KHR_shader_non_semantic_info",
      "VK_KHR_shader_quad_control",
      "VK_KHR_shader_subgroup_extended_types",
      "VK_KHR_shader_subgroup_rotate",
      "VK_KHR_shader_subgroup_uniform_control_flow",
      "VK_KHR_shader_terminate_invocation",
      "VK_KHR_spirv_1_4",
      "VK_KHR_storage_buffer_storage_class",
      "VK_KHR_swapchain",
      "VK_KHR_swapchain_mutable_format",
      "VK_KHR_synchronization2",
      "VK_KHR_timeline_semaphore",
      "VK_KHR_uniform_buffer_standard_layout",
      "VK_KHR_variable_pointers",
      "VK_KHR_vertex_attribute_divisor",
      "VK_KHR_vulkan_memory_model",
      "VK_KHR_workgroup_memory_explicit_layout",
      "VK_KHR_zero_initialize_workgroup_memory",
      "VK_NV_compute_shader_derivatives",
      "VK_VALVE_mutable_descriptor_type"
    ],
    "choosen_device": {
      "name": "AMD Radeon R4 Graphics (RADV STONEY)",
      "version": "0.1.3.289",
      "apiVersion": 4206881,
      "driverVersion": 100671496,
      "vendorID": 4098,
      "deviceID": 39140,
      "deviceType": 1,
      "index": 0,
      "memory": {
        "types": [
          {
            "propertyFlags": 1,
            "heapIndex": 1
          },
          {
            "propertyFlags": 1,
            "heapIndex": 1
          },
          {
            "propertyFlags": 6,
            "heapIndex": 0
          },
          {
            "propertyFlags": 7,
            "heapIndex": 1
          },
          {
            "propertyFlags": 7,
            "heapIndex": 1
          },
          {
            "propertyFlags": 14,
            "heapIndex": 0
          },
          {
            "propertyFlags": 14,
            "heapIndex": 0
          }
        ],
        "heaps": [
          {
            "size": 586992,
            "flags": 0
          },
          {
            "size": 1173988,
            "flags": 1
          }
        ]
      },
      "constants": {
        "limits": {
          "maxImageDimension1D": 16384,
          "maxImageDimension2D": 16384,
          "maxImageDimension3D": 2048,
          "maxImageDimensionCube": 16384,
          "maxImageArrayLayers": 2048,
          "maxUniformBufferRange": 4294967295,
          "maxStorageBufferRange": 4294967295,
          "maxPushConstantsSize": 256,
          "maxMemoryAllocationCount": 4294967295,
          "maxSamplerAllocationCount": 65536,
          "bufferImageGranularity": 1,
          "maxBoundDescriptorSets": 32,
          "maxPerStageDescriptorSamplers": 8388606,
          "maxPerStageDescriptorUniformBuffers": 8388606,
          "maxPerStageDescriptorStorageBuffers": 8388606,
          "maxPerStageDescriptorSampledImages": 8388606,
          "maxPerStageDescriptorStorageImages": 8388606,
          "maxPerStageDescriptorInputAttachments": 8388606,
          "maxPerStageResources": 8388606,
          "maxDescriptorSetSamplers": 8388606,
          "maxDescriptorSetUniformBuffers": 8388606,
          "maxDescriptorSetUniformBuffersDynamic": 16,
          "maxDescriptorSetStorageBuffers": 8388606,
          "maxDescriptorSetStorageBuffersDynamic": 8,
          "maxDescriptorSetSampledImages": 8388606,
          "maxDescriptorSetStorageImages": 8388606,
          "maxDescriptorSetInputAttachments": 8388606,
          "maxVertexInputAttributes": 32,
          "maxVertexInputBindings": 32,
          "maxVertexInputAttributeOffset": 4294967295,
          "maxVertexInputBindingStride": 2048,
          "maxComputeSharedMemorySize": 65536,
          "maxComputeWorkGroupCount": [
            65535,
            65535,
            65535
          ],
          "maxComputeWorkGroupInvocations": 1024,
          "maxComputeWorkGroupSize": [
            1024,
            1024,
            1024
          ],
          "maxDrawIndexedIndexValue": 4294967295,
          "maxSamplerLodBias": 16,
          "maxSamplerAnisotropy": 16,
          "minMemoryMapAlignment": 4096,
          "minTexelBufferOffsetAlignment": 4,
          "minUniformBufferOffsetAlignment": 4,
          "minStorageBufferOffsetAlignment": 4,
          "maxFramebufferWidth": 16384,
          "maxFramebufferHeight": 16384,
          "maxFramebufferLayers": 1024,
          "framebufferColorSampleCounts": 15,
          "framebufferDepthSampleCounts": 15,
          "framebufferStencilSampleCounts": 15,
          "framebufferNoAttachmentsSampleCounts": 15,
          "maxColorAttachments": 8,
          "sampledImageColorSampleCounts": 15,
          "sampledImageDepthSampleCounts": 15,
          "sampledImageStencilSampleCounts": 15,
          "storageImageSampleCounts": 15,
          "optimalBufferCopyOffsetAlignment": 1,
          "optimalBufferCopyRowPitchAlignment": 1
        },
        "descriptor_indexing": {
          "maxUpdateAfterBindDescriptorsInAllPools": 67108863,
          "shaderSampledImageArrayNonUniformIndexingNative": 0,
          "maxPerStageDescriptorUpdateAfterBindSamplers": 8388606,
          "maxPerStageDescriptorUpdateAfterBindSampledImages": 8388606,
          "maxPerStageDescriptorUpdateAfterBindUniformBuffers": 8388606,
          "maxPerStageUpdateAfterBindResources": 8388606,
          "maxDescriptorSetUpdateAfterBindSamplers": 8388606,
          "maxDescriptorSetUpdateAfterBindSampledImages": 8388606,
          "maxDescriptorSetUpdateAfterBindUniformBuffers": 8388606,
          "maxDescriptorSetUpdateAfterBindUniformBuffersDynamic": 16
        }
      },
      "features": {
        "robustBufferAccess": true,
        "fullDrawIndexUint32": true,
        "imageCubeArray": true,
        "geometryShader": true,
        "tessellationShader": true,
        "logicOp": true,
        "multiDrawIndirect": true,
        "depthClamp": true,
        "depthBiasClamp": true,
        "fillModeNonSolid": true,
        "samplerAnisotropy": true,
        "textureCompressionETC2": true,
        "textureCompressionASTC_LDR": false,
        "textureCompressionBC": true,
        "pipelineStatisticsQuery": true,
        "shaderUniformBufferArrayDynamicIndexing": true,
        "shaderSampledImageArrayDynamicIndexing": true,
        "shaderSampledImageArrayNonUniformIndexing": true,
        "descriptorBindingUniformBufferUpdateAfterBind": true,
        "descriptorBindingSampledImageUpdateAfterBind": true,
        "descriptorBindingPartiallyBound": true,
        "descriptorBindingUpdateUnusedWhilePending": true,
        "descriptorBindingVariableDescriptorCount": true,
        "runtimeDescriptorArray": true
      },
      "present_modes": [
        0,
        1,
        2,
        3
      ],
      "surface_formats": [
        {
          "format": 50,
          "color_space": 0
        },
        {
          "format": 44,
          "color_space": 0
        }
      ],
      "surface_capabilities": {
        "minImageCount": 3,
        "maxImageCount": 0,
        "maxImageArrayLayers": 1,
        "supportedTransforms": 1,
        "supportedCompositeAlpha": 9,
        "supportedUsageFlags": 524447
      }
    },
    "available_devices": [
      {
        "name": "AMD Radeon R4 Graphics (RADV STONEY)",
        "version": "0.1.3.289",
        "apiVersion": 4206881,
        "driverVersion": 100671496,
        "vendorID": 4098,
        "deviceID": 39140,
        "deviceType": 1,
        "index": 1,
        "memory": {
          "types": [
            {
              "propertyFlags": 1,
              "heapIndex": 1
            },
            {
              "propertyFlags": 1,
              "heapIndex": 1
            },
            {
              "propertyFlags": 6,
              "heapIndex": 0
            },
            {
              "propertyFlags": 7,
              "heapIndex": 1
            },
            {
              "propertyFlags": 7,
              "heapIndex": 1
            },
            {
              "propertyFlags": 14,
              "heapIndex": 0
            },
            {
              "propertyFlags": 14,
              "heapIndex": 0
            }
          ],
          "heaps": [
            {
              "size": 586992,
              "flags": 0
            },
            {
              "size": 1173988,
              "flags": 1
            }
          ]
        },
        "constants": {
          "limits": {
            "maxImageDimension1D": 16384,
            "maxImageDimension2D": 16384,
            "maxImageDimension3D": 2048,
            "maxImageDimensionCube": 16384,
            "maxImageArrayLayers": 2048,
            "maxUniformBufferRange": 4294967295,
            "maxStorageBufferRange": 4294967295,
            "maxPushConstantsSize": 256,
            "maxMemoryAllocationCount": 4294967295,
            "maxSamplerAllocationCount": 65536,
            "bufferImageGranularity": 1,
            "maxBoundDescriptorSets": 32,
            "maxPerStageDescriptorSamplers": 8388606,
            "maxPerStageDescriptorUniformBuffers": 8388606,
            "maxPerStageDescriptorStorageBuffers": 8388606,
            "maxPerStageDescriptorSampledImages": 8388606,
            "maxPerStageDescriptorStorageImages": 8388606,
            "maxPerStageDescriptorInputAttachments": 8388606,
            "maxPerStageResources": 8388606,
            "maxDescriptorSetSamplers": 8388606,
            "maxDescriptorSetUniformBuffers": 8388606,
            "maxDescriptorSetUniformBuffersDynamic": 16,
            "maxDescriptorSetStorageBuffers": 8388606,
            "maxDescriptorSetStorageBuffersDynamic": 8,
            "maxDescriptorSetSampledImages": 8388606,
            "maxDescriptorSetStorageImages": 8388606,
            "maxDescriptorSetInputAttachments": 8388606,
            "maxVertexInputAttributes": 32,
            "maxVertexInputBindings": 32,
            "maxVertexInputAttributeOffset": 4294967295,
            "maxVertexInputBindingStride": 2048,
            "maxComputeSharedMemorySize": 65536,
            "maxComputeWorkGroupCount": [
              65535,
              65535,
              65535
            ],
            "maxComputeWorkGroupInvocations": 1024,
            "maxComputeWorkGroupSize": [
              1024,
              1024,
              1024
            ],
            "maxDrawIndexedIndexValue": 4294967295,
            "maxSamplerLodBias": 16,
            "maxSamplerAnisotropy": 16,
            "minMemoryMapAlignment": 4096,
            "minTexelBufferOffsetAlignment": 4,
            "minUniformBufferOffsetAlignment": 4,
            "minStorageBufferOffsetAlignment": 4,
            "maxFramebufferWidth": 16384,
            "maxFramebufferHeight": 16384,
            "maxFramebufferLayers": 1024,
            "framebufferColorSampleCounts": 15,
            "framebufferDepthSampleCounts": 15,
            "framebufferStencilSampleCounts": 15,
            "framebufferNoAttachmentsSampleCounts": 15,
            "maxColorAttachments": 8,
            "sampledImageColorSampleCounts": 15,
            "sampledImageDepthSampleCounts": 15,
            "sampledImageStencilSampleCounts": 15,
            "storageImageSampleCounts": 15,
            "optimalBufferCopyOffsetAlignment": 1,
            "optimalBufferCopyRowPitchAlignment": 1
          },
          "descriptor_indexing": {
            "maxUpdateAfterBindDescriptorsInAllPools": 67108863,
            "shaderSampledImageArrayNonUniformIndexingNative": 0,
            "maxPerStageDescriptorUpdateAfterBindSamplers": 8388606,
            "maxPerStageDescriptorUpdateAfterBindSampledImages": 8388606,
            "maxPerStageDescriptorUpdateAfterBindUniformBuffers": 8388606,
            "maxPerStageUpdateAfterBindResources": 8388606,
            "maxDescriptorSetUpdateAfterBindSamplers": 8388606,
            "maxDescriptorSetUpdateAfterBindSampledImages": 8388606,
            "maxDescriptorSetUpdateAfterBindUniformBuffers": 8388606,
            "maxDescriptorSetUpdateAfterBindUniformBuffersDynamic": 16
          }
        },
        "features": {
          "robustBufferAccess": true,
          "fullDrawIndexUint32": true,
          "imageCubeArray": true,
          "geometryShader": true,
          "tessellationShader": true,
          "logicOp": true,
          "multiDrawIndirect": true,
          "depthClamp": true,
          "depthBiasClamp": true,
          "fillModeNonSolid": true,
          "samplerAnisotropy": true,
          "textureCompressionETC2": true,
          "textureCompressionASTC_LDR": false,
          "textureCompressionBC": true,
          "pipelineStatisticsQuery": true,
          "shaderUniformBufferArrayDynamicIndexing": true,
          "shaderSampledImageArrayDynamicIndexing": true,
          "shaderSampledImageArrayNonUniformIndexing": true,
          "descriptorBindingUniformBufferUpdateAfterBind": true,
          "descriptorBindingSampledImageUpdateAfterBind": true,
          "descriptorBindingPartiallyBound": true,
          "descriptorBindingUpdateUnusedWhilePending": true,
          "descriptorBindingVariableDescriptorCount": true,
          "runtimeDescriptorArray": true
        },
        "present_modes": [
          0,
          1,
          2,
          3
        ],
        "surface_formats": [
          {
            "format": 50,
            "color_space": 0
          },
          {
            "format": 44,
            "color_space": 0
          }
        ],
        "surface_capabilities": {
          "minImageCount": 3,
          "maxImageCount": 0,
          "maxImageArrayLayers": 1,
          "supportedTransforms": 1,
          "supportedCompositeAlpha": 9,
          "supportedUsageFlags": 524447
        }
      },
      {
        "name": "llvmpipe (LLVM 19.1.1, 256 bits)",
        "version": "0.1.3.289",
        "apiVersion": 4206881,
        "driverVersion": 1,
        "vendorID": 65541,
        "deviceID": 0,
        "deviceType": 4,
        "index": 2,
        "memory": {
          "types": [
            {
              "propertyFlags": 15,
              "heapIndex": 0
            }
          ],
          "heaps": [
            {
              "size": 3358124,
              "flags": 1
            }
          ]
        },
        "constants": {
          "limits": {
            "maxImageDimension1D": 16384,
            "maxImageDimension2D": 16384,
            "maxImageDimension3D": 4096,
            "maxImageDimensionCube": 32768,
            "maxImageArrayLayers": 2048,
            "maxUniformBufferRange": 65536,
            "maxStorageBufferRange": 134217728,
            "maxPushConstantsSize": 256,
            "maxMemoryAllocationCount": 4294967295,
            "maxSamplerAllocationCount": 32768,
            "bufferImageGranularity": 64,
            "maxBoundDescriptorSets": 8,
            "maxPerStageDescriptorSamplers": 1000000,
            "maxPerStageDescriptorUniformBuffers": 1000000,
            "maxPerStageDescriptorStorageBuffers": 1000000,
            "maxPerStageDescriptorSampledImages": 1000000,
            "maxPerStageDescriptorStorageImages": 1000000,
            "maxPerStageDescriptorInputAttachments": 1000000,
            "maxPerStageResources": 1000000,
            "maxDescriptorSetSamplers": 1000000,
            "maxDescriptorSetUniformBuffers": 1000000,
            "maxDescriptorSetUniformBuffersDynamic": 1000000,
            "maxDescriptorSetStorageBuffers": 1000000,
            "maxDescriptorSetStorageBuffersDynamic": 1000000,
            "maxDescriptorSetSampledImages": 1000000,
            "maxDescriptorSetStorageImages": 1000000,
            "maxDescriptorSetInputAttachments": 1000000,
            "maxVertexInputAttributes": 32,
            "maxVertexInputBindings": 32,
            "maxVertexInputAttributeOffset": 2047,
            "maxVertexInputBindingStride": 2048,
            "maxComputeSharedMemorySize": 32768,
            "maxComputeWorkGroupCount": [
              65535,
              65535,
              65535
            ],
            "maxComputeWorkGroupInvocations": 1024,
            "maxComputeWorkGroupSize": [
              1024,
              1024,
              1024
            ],
            "maxDrawIndexedIndexValue": 4294967295,
            "maxSamplerLodBias": 16,
            "maxSamplerAnisotropy": 16,
            "minMemoryMapAlignment": 64,
            "minTexelBufferOffsetAlignment": 16,
            "minUniformBufferOffsetAlignment": 16,
            "minStorageBufferOffsetAlignment": 16,
            "maxFramebufferWidth": 16384,
            "maxFramebufferHeight": 16384,
            "maxFramebufferLayers": 2048,
            "framebufferColorSampleCounts": 5,
            "framebufferDepthSampleCounts": 5,
            "framebufferStencilSampleCounts": 5,
            "framebufferNoAttachmentsSampleCounts": 5,
            "maxColorAttachments": 8,
            "sampledImageColorSampleCounts": 5,
            "sampledImageDepthSampleCounts": 5,
            "sampledImageStencilSampleCounts": 5,
            "storageImageSampleCounts": 5,
            "optimalBufferCopyOffsetAlignment": 128,
            "optimalBufferCopyRowPitchAlignment": 128
          },
          "descriptor_indexing": {
            "maxUpdateAfterBindDescriptorsInAllPools": 4294967295,
            "shaderSampledImageArrayNonUniformIndexingNative": 1,
            "maxPerStageDescriptorUpdateAfterBindSamplers": 1000000,
            "maxPerStageDescriptorUpdateAfterBindSampledImages": 1000000,
            "maxPerStageDescriptorUpdateAfterBindUniformBuffers": 1000000,
            "maxPerStageUpdateAfterBindResources": 1000000,
            "maxDescriptorSetUpdateAfterBindSamplers": 1000000,
            "maxDescriptorSetUpdateAfterBindSampledImages": 1000000,
            "maxDescriptorSetUpdateAfterBindUniformBuffers": 1000000,
            "maxDescriptorSetUpdateAfterBindUniformBuffersDynamic": 1000000
          }
        },
        "features": {
          "robustBufferAccess": true,
          "fullDrawIndexUint32": true,
          "imageCubeArray": true,
          "geometryShader": true,
          "tessellationShader": true,
          "logicOp": true,
          "multiDrawIndirect": true,
          "depthClamp": true,
          "depthBiasClamp": true,
          "fillModeNonSolid": true,
          "samplerAnisotropy": true,
          "textureCompressionETC2": false,
          "textureCompressionASTC_LDR": false,
          "textureCompressionBC": true,
          "pipelineStatisticsQuery": true,
          "shaderUniformBufferArrayDynamicIndexing": true,
          "shaderSampledImageArrayDynamicIndexing": true,
          "shaderSampledImageArrayNonUniformIndexing": true,
          "descriptorBindingUniformBufferUpdateAfterBind": true,
          "descriptorBindingSampledImageUpdateAfterBind": true,
          "descriptorBindingPartiallyBound": true,
          "descriptorBindingUpdateUnusedWhilePending": true,
          "descriptorBindingVariableDescriptorCount": true,
          "runtimeDescriptorArray": true
        },
        "present_modes": [
          0,
          1,
          2,
          3
        ],
        "surface_formats": [
          {
            "format": 50,
            "color_space": 0
          },
          {
            "format": 44,
            "color_space": 0
          }
        ],
        "surface_capabilities": {
          "minImageCount": 3,
          "maxImageCount": 0,
          "maxImageArrayLayers": 1,
          "supportedTransforms": 1,
          "supportedCompositeAlpha": 9,
          "supportedUsageFlags": 524447
        }
      },
      {
        "name": "llvmpipe (LLVM 19.1.1, 256 bits)",
        "version": "0.1.3.289",
        "apiVersion": 4206881,
        "driverVersion": 1,
        "vendorID": 65541,
        "deviceID": 0,
        "deviceType": 4,
        "index": 3,
        "memory": {
          "types": [
            {
              "propertyFlags": 15,
              "heapIndex": 0
            }
          ],
          "heaps": [
            {
              "size": 3358124,
              "flags": 1
            }
          ]
        },
        "constants": {
          "limits": {
            "maxImageDimension1D": 16384,
            "maxImageDimension2D": 16384,
            "maxImageDimension3D": 4096,
            "maxImageDimensionCube": 32768,
            "maxImageArrayLayers": 2048,
            "maxUniformBufferRange": 65536,
            "maxStorageBufferRange": 134217728,
            "maxPushConstantsSize": 256,
            "maxMemoryAllocationCount": 4294967295,
            "maxSamplerAllocationCount": 32768,
            "bufferImageGranularity": 64,
            "maxBoundDescriptorSets": 8,
            "maxPerStageDescriptorSamplers": 1000000,
            "maxPerStageDescriptorUniformBuffers": 1000000,
            "maxPerStageDescriptorStorageBuffers": 1000000,
            "maxPerStageDescriptorSampledImages": 1000000,
            "maxPerStageDescriptorStorageImages": 1000000,
            "maxPerStageDescriptorInputAttachments": 1000000,
            "maxPerStageResources": 1000000,
            "maxDescriptorSetSamplers": 1000000,
            "maxDescriptorSetUniformBuffers": 1000000,
            "maxDescriptorSetUniformBuffersDynamic": 1000000,
            "maxDescriptorSetStorageBuffers": 1000000,
            "maxDescriptorSetStorageBuffersDynamic": 1000000,
            "maxDescriptorSetSampledImages": 1000000,
            "maxDescriptorSetStorageImages": 1000000,
            "maxDescriptorSetInputAttachments": 1000000,
            "maxVertexInputAttributes": 32,
            "maxVertexInputBindings": 32,
            "maxVertexInputAttributeOffset": 2047,
            "maxVertexInputBindingStride": 2048,
            "maxComputeSharedMemorySize": 32768,
            "maxComputeWorkGroupCount": [
              65535,
              65535,
              65535
            ],
            "maxComputeWorkGroupInvocations": 1024,
            "maxComputeWorkGroupSize": [
              1024,
              1024,
              1024
            ],
            "maxDrawIndexedIndexValue": 4294967295,
            "maxSamplerLodBias": 16,
            "maxSamplerAnisotropy": 16,
            "minMemoryMapAlignment": 64,
            "minTexelBufferOffsetAlignment": 16,
            "minUniformBufferOffsetAlignment": 16,
            "minStorageBufferOffsetAlignment": 16,
            "maxFramebufferWidth": 16384,
            "maxFramebufferHeight": 16384,
            "maxFramebufferLayers": 2048,
            "framebufferColorSampleCounts": 5,
            "framebufferDepthSampleCounts": 5,
            "framebufferStencilSampleCounts": 5,
            "framebufferNoAttachmentsSampleCounts": 5,
            "maxColorAttachments": 8,
            "sampledImageColorSampleCounts": 5,
            "sampledImageDepthSampleCounts": 5,
            "sampledImageStencilSampleCounts": 5,
            "storageImageSampleCounts": 5,
            "optimalBufferCopyOffsetAlignment": 128,
            "optimalBufferCopyRowPitchAlignment": 128
          },
          "descriptor_indexing": {
            "maxUpdateAfterBindDescriptorsInAllPools": 4294967295,
            "shaderSampledImageArrayNonUniformIndexingNative": 1,
            "maxPerStageDescriptorUpdateAfterBindSamplers": 1000000,
            "maxPerStageDescriptorUpdateAfterBindSampledImages": 1000000,
            "maxPerStageDescriptorUpdateAfterBindUniformBuffers": 1000000,
            "maxPerStageUpdateAfterBindResources": 1000000,
            "maxDescriptorSetUpdateAfterBindSamplers": 1000000,
            "maxDescriptorSetUpdateAfterBindSampledImages": 1000000,
            "maxDescriptorSetUpdateAfterBindUniformBuffers": 1000000,
            "maxDescriptorSetUpdateAfterBindUniformBuffersDynamic": 1000000
          }
        },
        "features": {
          "robustBufferAccess": true,
          "fullDrawIndexUint32": true,
          "imageCubeArray": true,
          "geometryShader": true,
          "tessellationShader": true,
          "logicOp": true,
          "multiDrawIndirect": true,
          "depthClamp": true,
          "depthBiasClamp": true,
          "fillModeNonSolid": true,
          "samplerAnisotropy": true,
          "textureCompressionETC2": false,
          "textureCompressionASTC_LDR": false,
          "textureCompressionBC": true,
          "pipelineStatisticsQuery": true,
          "shaderUniformBufferArrayDynamicIndexing": true,
          "shaderSampledImageArrayDynamicIndexing": true,
          "shaderSampledImageArrayNonUniformIndexing": true,
          "descriptorBindingUniformBufferUpdateAfterBind": true,
          "descriptorBindingSampledImageUpdateAfterBind": true,
          "descriptorBindingPartiallyBound": true,
          "descriptorBindingUpdateUnusedWhilePending": true,
          "descriptorBindingVariableDescriptorCount": true,
          "runtimeDescriptorArray": true
        },
        "present_modes": [
          0,
          1,
          2,
          3
        ],
        "surface_formats": [
          {
            "format": 50,
            "color_space": 0
          },
          {
            "format": 44,
            "color_space": 0
          }
        ],
        "surface_capabilities": {
          "minImageCount": 3,
          "maxImageCount": 0,
          "maxImageArrayLayers": 1,
          "supportedTransforms": 1,
          "supportedCompositeAlpha": 9,
          "supportedUsageFlags": 524447
        }
      }
    ],
    "instance_extensions": [
      "VK_KHR_device_group_creation",
      "VK_KHR_display",
      "VK_KHR_external_fence_capabilities",
      "VK_KHR_external_memory_capabilities",
      "VK_KHR_external_semaphore_capabilities",
      "VK_KHR_get_display_properties2",
      "VK_KHR_get_physical_device_properties2",
      "VK_KHR_get_surface_capabilities2",
      "VK_KHR_surface",
      "VK_KHR_surface_protected_capabilities",
      "VK_KHR_wayland_surface",
      "VK_KHR_xcb_surface",
      "VK_KHR_xlib_surface",
      "VK_EXT_acquire_drm_display",
      "VK_EXT_acquire_xlib_display",
      "VK_EXT_debug_report",
      "VK_EXT_debug_utils",
      "VK_EXT_direct_mode_display",
      "VK_EXT_display_surface_counter",
      "VK_EXT_headless_surface",
      "VK_EXT_surface_maintenance1",
      "VK_EXT_swapchain_colorspace",
      "VK_KHR_portability_enumeration",
      "VK_LUNARG_direct_driver_loading"
    ],
    "validation_layers": [
      "VK_LAYER_MESA_device_select",
      "VK_LAYER_MESA_device_select",
      "VK_LAYER_INTEL_nullhw",
      "VK_LAYER_MESA_overlay"
    ]
  },
  "video_desktop_xres": 1920,
  "video_desktop_yres": 1080,
  "video_desktop_bpp": 24,
  "video_desktop_freq": 60,
  "uname_sysname": "Linux",
  "uname_release": "6.14.0-15-generic",
  "uname_version": "#15-Ubuntu SMP PREEMPT_DYNAMIC Sun Apr  6 15:05:05 UTC 2025",
  "uname_machine": "x86_64",
  "linux_release": "DISTRIB_ID=Ubuntu\nDISTRIB_RELEASE=25.04\nDISTRIB_CODENAME=plucky\nDISTRIB_DESCRIPTION=\"Ubuntu 25.04\"\n",
  "cpu_identifier": "AMD A6-9220 RADEON R4, 5 COMPUTE CORES 2C+3G   ",
  "cpu_frequency": -1,
  "cpu_pagesize": 4096,
  "cpu_largepagesize": 0,
  "cpu_numprocs": 4,
  "numa_numnodes": 1,
  "numa_factor": 1,
  "numa_interleaved": false,
  "ram_total": 3279,
  "ram_total_os": 3279,
  "x86_vendor": 2,
  "x86_model": 0,
  "x86_family": 21,
  "x86_caps[0]": 1054355979,
  "x86_caps[1]": 395049983,
  "x86_caps[2]": 799784959,
  "x86_caps[3]": 802421759,
  "timer_resolution": 1e-9,
  "hardware_concurrency": 2,
  "random_device_entropy": 32
}
