From 9f208a5308ade8e6ea1162345359ad725a5d4acb Mon Sep 17 00:00:00 2001 From: Qiang Yu Date: Tue, 31 Dec 2024 11:17:47 +0800 Subject: [PATCH] gallium: add pipe_caps struct definition MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit one-one map of pipe_cap enum. Reviewed-by: Marek Olšák Part-of: --- src/gallium/include/pipe/p_defines.h | 302 +++++++++++++++++++++++++++ 1 file changed, 302 insertions(+) diff --git a/src/gallium/include/pipe/p_defines.h b/src/gallium/include/pipe/p_defines.h index 02733b9611d..1e75f61f2e1 100644 --- a/src/gallium/include/pipe/p_defines.h +++ b/src/gallium/include/pipe/p_defines.h @@ -1135,6 +1135,308 @@ enum pipe_compute_cap PIPE_COMPUTE_CAP_MAX_VARIABLE_THREADS_PER_BLOCK, }; +struct pipe_caps { + bool graphics; + bool npot_textures; + bool anisotropic_filter; + bool occlusion_query; + bool query_time_elapsed; + bool texture_shadow_map; + bool texture_swizzle; + bool texture_mirror_clamp; + bool blend_equation_separate; + bool primitive_restart; + bool primitive_restart_fixed_index; + bool indep_blend_enable; + bool indep_blend_func; + bool fs_coord_origin_upper_left; + bool fs_coord_origin_lower_left; + bool fs_coord_pixel_center_half_integer; + bool fs_coord_pixel_center_integer; + bool depth_clip_disable; + bool depth_clip_disable_separate; + bool depth_clamp_enable; + bool shader_stencil_export; + bool vs_instanceid; + bool vertex_element_instance_divisor; + bool fragment_color_clamped; + bool mixed_colorbuffer_formats; + bool seamless_cube_map; + bool seamless_cube_map_per_texture; + bool conditional_render; + bool texture_barrier; + bool stream_output_pause_resume; + bool tgsi_can_compact_constants; + bool vertex_color_unclamped; + bool vertex_color_clamped; + bool quads_follow_provoking_vertex_convention; + bool user_vertex_buffers; + bool compute; + bool start_instance; + bool query_timestamp; + bool texture_multisample; + bool cube_map_array; + bool texture_buffer_objects; + bool buffer_sampler_view_rgba_only; + bool tgsi_texcoord; + bool query_pipeline_statistics; + bool mixed_framebuffer_sizes; + bool vs_layer_viewport; + bool texture_gather_sm5; + bool buffer_map_persistent_coherent; + bool fake_sw_msaa; + bool texture_query_lod; + bool sample_shading; + bool texture_gather_offsets; + bool vs_window_space_position; + bool draw_indirect; + bool fs_fine_derivative; + bool uma; + bool conditional_render_inverted; + bool sampler_view_target; + bool clip_halfz; + bool polygon_offset_clamp; + bool multisample_z_resolve; + bool resource_from_user_memory; + bool resource_from_user_memory_compute_only; + bool device_reset_status_query; + bool texture_float_linear; + bool texture_half_float_linear; + bool depth_bounds_test; + bool texture_query_samples; + bool force_persample_interp; + bool shareable_shaders; + bool copy_between_compressed_and_plain_formats; + bool clear_scissored; + bool draw_parameters; + bool shader_pack_half_float; + bool multi_draw_indirect; + bool multi_draw_indirect_params; + bool multi_draw_indirect_partial_stride; + bool fs_position_is_sysval; + bool fs_point_is_sysval; + bool fs_face_is_integer_sysval; + bool invalidate_buffer; + bool generate_mipmap; + bool string_marker; + bool surface_reinterpret_blocks; + bool query_buffer_object; + bool query_memory_info; + bool framebuffer_no_attachment; + bool robust_buffer_access_behavior; + bool cull_distance; + bool shader_group_vote; + bool polygon_offset_units_unscaled; + bool shader_array_components; + bool stream_output_interleave_buffers; + bool native_fence_fd; + bool glsl_tess_levels_as_inputs; + bool legacy_math_rules; + bool fp16; + bool doubles; + bool int64; + bool tgsi_tex_txf_lz; + bool shader_clock; + bool polygon_mode_fill_rectangle; + bool shader_ballot; + bool tes_layer_viewport; + bool can_bind_const_buffer_as_vertex; + bool allow_mapped_buffers_during_execution; + bool post_depth_coverage; + bool bindless_texture; + bool nir_samplers_as_deref; + bool query_so_overflow; + bool memobj; + bool load_constbuf; + bool tile_raster_order; + bool signed_vertex_buffer_offset; + bool fence_signal; + bool packed_uniforms; + bool conservative_raster_post_snap_triangles; + bool conservative_raster_post_snap_points_lines; + bool conservative_raster_pre_snap_triangles; + bool conservative_raster_pre_snap_points_lines; + bool conservative_raster_post_depth_coverage; + bool conservative_raster_inner_coverage; + bool programmable_sample_locations; + bool texture_mirror_clamp_to_edge; + bool surface_sample_count; + bool image_atomic_float_add; + bool query_pipeline_statistics_single; + bool dest_surface_srgb_control; + bool compute_grid_info_last_block; + bool compute_shader_derivatives; + bool image_load_formatted; + bool image_store_formatted; + bool throttle; + bool cl_gl_sharing; + bool prefer_compute_for_multimedia; + bool fragment_shader_interlock; + bool fbfetch_coherent; + bool atomic_float_minmax; + bool tgsi_div; + bool fragment_shader_texture_lod; + bool fragment_shader_derivatives; + bool texture_shadow_lod; + bool shader_samples_identical; + bool image_atomic_inc_wrap; + bool prefer_imm_arrays_as_constbuf; + bool gl_spirv; + bool gl_spirv_variable_pointers; + bool demote_to_helper_invocation; + bool tgsi_tg4_component_in_swizzle; + bool flatshade; + bool alpha_test; + bool two_sided_color; + bool opencl_integer_functions; + bool integer_multiply_32x16; + bool frontend_noop; + bool nir_images_as_deref; + bool packed_stream_output; + bool viewport_transform_lowered; + bool psiz_clamped; + bool viewport_swizzle; + bool system_svm; + bool viewport_mask; + bool alpha_to_coverage_dither_control; + bool map_unsynchronized_thread_safe; + bool blend_equation_advanced; + bool nir_atomics_as_deref; + bool no_clip_on_copy_tex; + bool shader_atomic_int64; + bool device_protected_surface; + bool prefer_real_buffer_in_constbuf0; + bool gl_clamp; + bool texrect; + bool sampler_reduction_minmax; + bool sampler_reduction_minmax_arb; + bool allow_dynamic_vao_fastpath; + bool emulate_nonfixed_primitive_restart; + bool prefer_back_buffer_reuse; + bool draw_vertex_state; + bool prefer_pot_aligned_varyings; + bool sparse_texture_full_array_cube_mipmaps; + bool query_sparse_texture_residency; + bool clamp_sparse_texture_lod; + bool allow_draw_out_of_order; + bool hardware_gl_select; + bool dithering; + bool fbfetch_zs; + bool timeline_semaphore_import; + bool device_protected_context; + bool allow_glthread_buffer_subdata_opt; + bool null_textures; + bool astc_void_extents_need_denorm_flush; + bool validate_all_dirty_states; + bool has_const_bw; + bool performance_monitor; + bool texture_sampler_independent; + bool astc_decode_mode; + bool shader_subgroup_quad_all_stages; + bool call_finalize_nir_in_linker; + + int accelerated; + int min_texel_offset; + int max_texel_offset; + int min_texture_gather_offset; + int max_texture_gather_offset; + + unsigned max_dual_source_render_targets; + unsigned max_render_targets; + unsigned max_texture_2d_size; + unsigned max_texture_3d_levels; + unsigned max_texture_cube_levels; + unsigned max_stream_output_buffers; + unsigned max_texture_array_layers; + unsigned max_stream_output_separate_components; + unsigned max_stream_output_interleaved_components; + unsigned glsl_feature_level; + unsigned glsl_feature_level_compatibility; + unsigned essl_feature_level; + unsigned constant_buffer_offset_alignment; + unsigned timer_resolution; + unsigned min_map_buffer_alignment; + unsigned texture_buffer_offset_alignment; + unsigned linear_image_pitch_alignment; + unsigned linear_image_base_address_alignment; + /* pipe_texture_transfer_mode */ + unsigned texture_transfer_modes; + /* pipe_quirk_texture_border_color_swizzle */ + unsigned texture_border_color_quirk; + unsigned max_texel_buffer_elements_uint; + unsigned max_viewports; + unsigned max_geometry_output_vertices; + unsigned max_geometry_total_output_components; + unsigned max_texture_gather_components; + unsigned max_vertex_streams; + unsigned vendor_id; + unsigned device_id; + unsigned video_memory; + unsigned max_vertex_attrib_stride; + unsigned max_shader_patch_varyings; + unsigned shader_buffer_offset_alignment; + unsigned pci_group; + unsigned pci_bus; + unsigned pci_device; + unsigned pci_function; + unsigned max_window_rectangles; + unsigned viewport_subpixel_bits; + unsigned rasterizer_subpixel_bits; + unsigned mixed_color_depth_bits; + unsigned fbfetch; + unsigned sparse_buffer_page_size; + unsigned max_combined_shader_output_resources; + unsigned framebuffer_msaa_constraints; + unsigned context_priority_mask; + unsigned constbuf0_flags; + unsigned max_conservative_raster_subpixel_precision_bias; + unsigned max_gs_invocations; + unsigned max_shader_buffer_size_uint; + unsigned max_combined_shader_buffers; + unsigned max_combined_hw_atomic_counters; + unsigned max_combined_hw_atomic_counter_buffers; + unsigned max_texture_upload_memory_budget; + unsigned max_vertex_element_src_offset; + unsigned max_varyings; + unsigned dmabuf; + unsigned clip_planes; + unsigned max_vertex_buffers; + unsigned gl_begin_end_buffer_size; + unsigned glsl_zero_init; + unsigned max_texture_mb; + unsigned supported_prim_modes; + unsigned supported_prim_modes_with_restart; + unsigned max_sparse_texture_size; + unsigned max_sparse_3d_texture_size; + unsigned max_sparse_array_texture_layers; + unsigned max_constant_buffer_size_uint; + unsigned query_timestamp_bits; + unsigned shader_subgroup_size; + unsigned shader_subgroup_supported_stages; + unsigned shader_subgroup_supported_features; + unsigned multiview; + + enum pipe_vertex_input_alignment vertex_input_alignment; + enum pipe_endian endianness; + enum pipe_point_size_lower_mode point_size_fixed; + + float min_line_width; + float min_line_width_aa; + float max_line_width; + float max_line_width_aa; + float line_width_granularity; + float min_point_size; + float min_point_size_aa; + float max_point_size; + float max_point_size_aa; + float point_size_granularity; + float max_texture_anisotropy; + float max_texture_lod_bias; + float min_conservative_raster_dilate; + float max_conservative_raster_dilate; + float conservative_raster_dilate_granularity; +}; + /** * Resource parameters. They can be queried using * pipe_screen::get_resource_param.