From aaf865cdf2af1a2aa081e54eb87350589b4fe296 Mon Sep 17 00:00:00 2001 From: Qiang Yu Date: Wed, 22 Jan 2025 10:21:30 +0800 Subject: [PATCH] virgl: remove shader and compute get param MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Acked-by: Alyssa Rosenzweig Acked-by: Marek Olšák Part-of: --- src/gallium/drivers/virgl/virgl_screen.c | 156 ----------------------- 1 file changed, 156 deletions(-) diff --git a/src/gallium/drivers/virgl/virgl_screen.c b/src/gallium/drivers/virgl/virgl_screen.c index 6216ce58bf6..e3a565a5934 100644 --- a/src/gallium/drivers/virgl/virgl_screen.c +++ b/src/gallium/drivers/virgl/virgl_screen.c @@ -77,116 +77,6 @@ virgl_get_name(struct pipe_screen *screen) #define VIRGL_SHADER_STAGE_CAP_V2(CAP, STAGE) \ vscreen->caps.caps.v2. CAP[virgl_shader_stage_convert(STAGE)] -static int -virgl_get_shader_param(struct pipe_screen *screen, - enum pipe_shader_type shader, - enum pipe_shader_cap param) -{ - struct virgl_screen *vscreen = virgl_screen(screen); - - if ((shader == PIPE_SHADER_TESS_CTRL || shader == PIPE_SHADER_TESS_EVAL) && - !vscreen->caps.caps.v1.bset.has_tessellation_shaders) - return 0; - - if (shader == PIPE_SHADER_COMPUTE && - !(vscreen->caps.caps.v2.capability_bits & VIRGL_CAP_COMPUTE_SHADER)) - return 0; - - switch(shader) - { - case PIPE_SHADER_FRAGMENT: - case PIPE_SHADER_VERTEX: - case PIPE_SHADER_GEOMETRY: - case PIPE_SHADER_TESS_CTRL: - case PIPE_SHADER_TESS_EVAL: - case PIPE_SHADER_COMPUTE: - switch (param) { - case PIPE_SHADER_CAP_MAX_INSTRUCTIONS: - case PIPE_SHADER_CAP_MAX_ALU_INSTRUCTIONS: - case PIPE_SHADER_CAP_MAX_TEX_INSTRUCTIONS: - case PIPE_SHADER_CAP_MAX_TEX_INDIRECTIONS: - return INT_MAX; - case PIPE_SHADER_CAP_INDIRECT_TEMP_ADDR: - case PIPE_SHADER_CAP_INDIRECT_CONST_ADDR: - return 1; - case PIPE_SHADER_CAP_TGSI_ANY_INOUT_DECL_RANGE: - return vscreen->caps.caps.v2.capability_bits & VIRGL_CAP_INDIRECT_INPUT_ADDR; - case PIPE_SHADER_CAP_MAX_INPUTS: - if (vscreen->caps.caps.v1.glsl_level < 150) - return vscreen->caps.caps.v2.max_vertex_attribs; - return (shader == PIPE_SHADER_VERTEX || - shader == PIPE_SHADER_GEOMETRY) ? vscreen->caps.caps.v2.max_vertex_attribs : 32; - case PIPE_SHADER_CAP_MAX_OUTPUTS: - switch (shader) { - case PIPE_SHADER_FRAGMENT: - return vscreen->caps.caps.v1.max_render_targets; - case PIPE_SHADER_TESS_CTRL: - if (vscreen->caps.caps.v2.host_feature_check_version >= 19) - return vscreen->caps.caps.v2.max_tcs_outputs; - FALLTHROUGH; - case PIPE_SHADER_TESS_EVAL: - if (vscreen->caps.caps.v2.host_feature_check_version >= 19) - return vscreen->caps.caps.v2.max_tes_outputs; - FALLTHROUGH; - default: - return vscreen->caps.caps.v2.max_vertex_outputs; - } - // case PIPE_SHADER_CAP_MAX_CONSTS: - // return 4096; - case PIPE_SHADER_CAP_MAX_TEMPS: - return 256; - case PIPE_SHADER_CAP_MAX_CONST_BUFFERS: - return MIN2(vscreen->caps.caps.v1.max_uniform_blocks, PIPE_MAX_CONSTANT_BUFFERS); - // case PIPE_SHADER_CAP_MAX_ADDRS: - // return 1; - case PIPE_SHADER_CAP_SUBROUTINES: - return 1; - case PIPE_SHADER_CAP_MAX_TEXTURE_SAMPLERS: - return MIN2(vscreen->caps.caps.v2.max_texture_samplers, PIPE_MAX_SAMPLERS); - case PIPE_SHADER_CAP_INTEGERS: - return vscreen->caps.caps.v1.glsl_level >= 130; - case PIPE_SHADER_CAP_MAX_CONTROL_FLOW_DEPTH: - return 32; - case PIPE_SHADER_CAP_MAX_CONST_BUFFER0_SIZE: - if (vscreen->caps.caps.v2.host_feature_check_version < 12) - return 4096 * sizeof(float[4]); - return VIRGL_SHADER_STAGE_CAP_V2(max_const_buffer_size, shader); - case PIPE_SHADER_CAP_MAX_SHADER_BUFFERS: { - int max_shader_buffers = VIRGL_SHADER_STAGE_CAP_V2(max_shader_storage_blocks, shader); - if (max_shader_buffers != INT_MAX) { - return max_shader_buffers; - } else if (shader == PIPE_SHADER_FRAGMENT || shader == PIPE_SHADER_COMPUTE) { - return vscreen->caps.caps.v2.max_shader_buffer_frag_compute; - } else { - return vscreen->caps.caps.v2.max_shader_buffer_other_stages; - } - } - case PIPE_SHADER_CAP_MAX_SHADER_IMAGES: - if (shader == PIPE_SHADER_FRAGMENT || shader == PIPE_SHADER_COMPUTE) - return vscreen->caps.caps.v2.max_shader_image_frag_compute; - else - return vscreen->caps.caps.v2.max_shader_image_other_stages; - case PIPE_SHADER_CAP_SUPPORTED_IRS: - return (1 << PIPE_SHADER_IR_TGSI) | (1 << PIPE_SHADER_IR_NIR); - case PIPE_SHADER_CAP_MAX_HW_ATOMIC_COUNTERS: - return VIRGL_SHADER_STAGE_CAP_V2(max_atomic_counters, shader); - case PIPE_SHADER_CAP_MAX_HW_ATOMIC_COUNTER_BUFFERS: - return VIRGL_SHADER_STAGE_CAP_V2(max_atomic_counter_buffers, shader); - case PIPE_SHADER_CAP_INT64_ATOMICS: - case PIPE_SHADER_CAP_FP16: - case PIPE_SHADER_CAP_FP16_DERIVATIVES: - case PIPE_SHADER_CAP_FP16_CONST_BUFFERS: - case PIPE_SHADER_CAP_INT16: - case PIPE_SHADER_CAP_GLSL_16BIT_CONSTS: - return 0; - default: - return 0; - } - default: - return 0; - } -} - static int virgl_get_video_param(struct pipe_screen *screen, enum pipe_video_profile profile, @@ -276,50 +166,6 @@ virgl_get_video_param(struct pipe_screen *screen, } } -static int -virgl_get_compute_param(struct pipe_screen *screen, - enum pipe_compute_cap param, - void *ret) -{ - struct virgl_screen *vscreen = virgl_screen(screen); - if (!(vscreen->caps.caps.v2.capability_bits & VIRGL_CAP_COMPUTE_SHADER)) - return 0; - switch (param) { - case PIPE_COMPUTE_CAP_MAX_GRID_SIZE: - if (ret) { - uint64_t *grid_size = ret; - grid_size[0] = vscreen->caps.caps.v2.max_compute_grid_size[0]; - grid_size[1] = vscreen->caps.caps.v2.max_compute_grid_size[1]; - grid_size[2] = vscreen->caps.caps.v2.max_compute_grid_size[2]; - } - return 3 * sizeof(uint64_t) ; - case PIPE_COMPUTE_CAP_MAX_BLOCK_SIZE: - if (ret) { - uint64_t *block_size = ret; - block_size[0] = vscreen->caps.caps.v2.max_compute_block_size[0]; - block_size[1] = vscreen->caps.caps.v2.max_compute_block_size[1]; - block_size[2] = vscreen->caps.caps.v2.max_compute_block_size[2]; - } - return 3 * sizeof(uint64_t); - case PIPE_COMPUTE_CAP_MAX_THREADS_PER_BLOCK: - if (ret) { - uint64_t *max_threads_per_block = ret; - *max_threads_per_block = vscreen->caps.caps.v2.max_compute_work_group_invocations; - } - return sizeof(uint64_t); - case PIPE_COMPUTE_CAP_MAX_LOCAL_SIZE: - if (ret) { - uint64_t *max_local_size = ret; - /* Value reported by the closed source driver. */ - *max_local_size = vscreen->caps.caps.v2.max_compute_shared_memory_size; - } - return sizeof(uint64_t); - default: - break; - } - return 0; -} - static void virgl_init_shader_caps(struct virgl_screen *vscreen) { @@ -1190,9 +1036,7 @@ virgl_create_screen(struct virgl_winsys *vws, const struct pipe_screen_config *c screen->base.get_name = virgl_get_name; screen->base.get_vendor = virgl_get_vendor; screen->base.get_screen_fd = virgl_screen_get_fd; - screen->base.get_shader_param = virgl_get_shader_param; screen->base.get_video_param = virgl_get_video_param; - screen->base.get_compute_param = virgl_get_compute_param; screen->base.get_compiler_options = virgl_get_compiler_options; screen->base.is_format_supported = virgl_is_format_supported; screen->base.is_video_format_supported = virgl_is_video_format_supported;