diff --git a/src/gallium/drivers/v3d/v3d_screen.c b/src/gallium/drivers/v3d/v3d_screen.c index c83ac80ba45..5abd6ee2bbe 100644 --- a/src/gallium/drivers/v3d/v3d_screen.c +++ b/src/gallium/drivers/v3d/v3d_screen.c @@ -116,234 +116,6 @@ v3d_has_feature(struct v3d_screen *screen, enum drm_v3d_param feature) return p.value; } -static int -v3d_screen_get_param(struct pipe_screen *pscreen, enum pipe_cap param) -{ - struct v3d_screen *screen = v3d_screen(pscreen); - - switch (param) { - /* Supported features (boolean caps). */ - case PIPE_CAP_VERTEX_COLOR_UNCLAMPED: - case PIPE_CAP_NPOT_TEXTURES: - case PIPE_CAP_BLEND_EQUATION_SEPARATE: - case PIPE_CAP_TEXTURE_MULTISAMPLE: - case PIPE_CAP_TEXTURE_SWIZZLE: - case PIPE_CAP_VERTEX_ELEMENT_INSTANCE_DIVISOR: - case PIPE_CAP_START_INSTANCE: - case PIPE_CAP_VS_INSTANCEID: - case PIPE_CAP_FRAGMENT_SHADER_TEXTURE_LOD: - case PIPE_CAP_FRAGMENT_SHADER_DERIVATIVES: - case PIPE_CAP_PRIMITIVE_RESTART_FIXED_INDEX: - case PIPE_CAP_EMULATE_NONFIXED_PRIMITIVE_RESTART: - case PIPE_CAP_PRIMITIVE_RESTART: - case PIPE_CAP_OCCLUSION_QUERY: - case PIPE_CAP_STREAM_OUTPUT_PAUSE_RESUME: - case PIPE_CAP_DRAW_INDIRECT: - case PIPE_CAP_MULTI_DRAW_INDIRECT: - case PIPE_CAP_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION: - case PIPE_CAP_SIGNED_VERTEX_BUFFER_OFFSET: - case PIPE_CAP_SHADER_PACK_HALF_FLOAT: - case PIPE_CAP_TEXTURE_HALF_FLOAT_LINEAR: - case PIPE_CAP_FRAMEBUFFER_NO_ATTACHMENT: - case PIPE_CAP_FS_FACE_IS_INTEGER_SYSVAL: - case PIPE_CAP_TGSI_TEXCOORD: - case PIPE_CAP_TEXTURE_MIRROR_CLAMP_TO_EDGE: - case PIPE_CAP_SAMPLER_VIEW_TARGET: - case PIPE_CAP_ANISOTROPIC_FILTER: - case PIPE_CAP_COPY_BETWEEN_COMPRESSED_AND_PLAIN_FORMATS: - case PIPE_CAP_INDEP_BLEND_FUNC: - case PIPE_CAP_CONDITIONAL_RENDER: - case PIPE_CAP_CONDITIONAL_RENDER_INVERTED: - case PIPE_CAP_CUBE_MAP_ARRAY: - case PIPE_CAP_TEXTURE_BARRIER: - case PIPE_CAP_POLYGON_OFFSET_CLAMP: - case PIPE_CAP_TEXTURE_QUERY_LOD: - return 1; - case PIPE_CAP_QUERY_TIMESTAMP: - case PIPE_CAP_QUERY_TIME_ELAPSED: - return screen->has_cpu_queue && screen->has_multisync; - case PIPE_CAP_TEXTURE_SAMPLER_INDEPENDENT: - return 0; - - case PIPE_CAP_PACKED_UNIFORMS: - /* We can't enable this flag, because it results in load_ubo - * intrinsics across a 16b boundary, but v3d's TMU general - * memory accesses wrap on 16b boundaries. - */ - return 0; - - case PIPE_CAP_NIR_IMAGES_AS_DEREF: - return 0; - - case PIPE_CAP_TEXTURE_TRANSFER_MODES: - /* XXX perf: we don't want to emit these extra blits for - * glReadPixels(), since we still have to do an uncached read - * from the GPU of the result after waiting for the TFU blit - * to happen. However, disabling this introduces instability - * in - * dEQP-GLES31.functional.image_load_store.early_fragment_tests.* - * and corruption in chromium's rendering. - */ - return PIPE_TEXTURE_TRANSFER_BLIT; - - case PIPE_CAP_COMPUTE: - return screen->has_csd; - - case PIPE_CAP_GENERATE_MIPMAP: - return v3d_has_feature(screen, DRM_V3D_PARAM_SUPPORTS_TFU); - - case PIPE_CAP_INDEP_BLEND_ENABLE: - return 1; - - case PIPE_CAP_CONSTANT_BUFFER_OFFSET_ALIGNMENT: - return V3D_NON_COHERENT_ATOM_SIZE; - - case PIPE_CAP_MAX_TEXTURE_GATHER_COMPONENTS: - return 4; - - case PIPE_CAP_SHADER_BUFFER_OFFSET_ALIGNMENT: - if (screen->has_cache_flush) - return 4; - else - return 0; /* Disables shader storage */ - - case PIPE_CAP_GLSL_FEATURE_LEVEL: - return 330; - - case PIPE_CAP_ESSL_FEATURE_LEVEL: - return 310; - - case PIPE_CAP_GLSL_FEATURE_LEVEL_COMPATIBILITY: - return 140; - - case PIPE_CAP_FS_COORD_ORIGIN_UPPER_LEFT: - return 1; - case PIPE_CAP_FS_COORD_ORIGIN_LOWER_LEFT: - return 0; - case PIPE_CAP_FS_COORD_PIXEL_CENTER_INTEGER: - return 0; - case PIPE_CAP_FS_COORD_PIXEL_CENTER_HALF_INTEGER: - return 1; - - case PIPE_CAP_MIXED_FRAMEBUFFER_SIZES: - case PIPE_CAP_MIXED_COLOR_DEPTH_BITS: - return 1; - - case PIPE_CAP_MAX_STREAM_OUTPUT_BUFFERS: - return 4; - - case PIPE_CAP_MAX_VARYINGS: - return V3D_MAX_FS_INPUTS / 4; - - /* Texturing. */ - case PIPE_CAP_MAX_TEXTURE_2D_SIZE: - if (screen->nonmsaa_texture_size_limit) - return 7680; - else - return V3D_MAX_IMAGE_DIMENSION; - case PIPE_CAP_MAX_TEXTURE_CUBE_LEVELS: - case PIPE_CAP_MAX_TEXTURE_3D_LEVELS: - return V3D_MAX_MIP_LEVELS; - case PIPE_CAP_MAX_TEXTURE_ARRAY_LAYERS: - return V3D_MAX_ARRAY_LAYERS; - - case PIPE_CAP_MAX_RENDER_TARGETS: - return V3D_MAX_RENDER_TARGETS(screen->devinfo.ver); - - case PIPE_CAP_VENDOR_ID: - return 0x14E4; - case PIPE_CAP_ACCELERATED: - return 1; - case PIPE_CAP_VIDEO_MEMORY: { - uint64_t system_memory; - - if (!os_get_total_physical_memory(&system_memory)) - return 0; - - return (int)(system_memory >> 20); - } - case PIPE_CAP_UMA: - return 1; - - case PIPE_CAP_ALPHA_TEST: - case PIPE_CAP_FLATSHADE: - case PIPE_CAP_TWO_SIDED_COLOR: - case PIPE_CAP_VERTEX_COLOR_CLAMPED: - case PIPE_CAP_FRAGMENT_COLOR_CLAMPED: - case PIPE_CAP_GL_CLAMP: - return 0; - - /* Geometry shaders */ - case PIPE_CAP_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS: - /* Minimum required by GLES 3.2 */ - return 1024; - case PIPE_CAP_MAX_GEOMETRY_OUTPUT_VERTICES: - /* MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS / 4 */ - return 256; - case PIPE_CAP_MAX_GS_INVOCATIONS: - return 32; - - case PIPE_CAP_SUPPORTED_PRIM_MODES: - case PIPE_CAP_SUPPORTED_PRIM_MODES_WITH_RESTART: - return screen->prim_types; - - case PIPE_CAP_TEXTURE_BUFFER_OBJECTS: - return true; - - case PIPE_CAP_TEXTURE_BUFFER_OFFSET_ALIGNMENT: - return V3D_TMU_TEXEL_ALIGN; - - case PIPE_CAP_IMAGE_STORE_FORMATTED: - return false; - - case PIPE_CAP_NATIVE_FENCE_FD: - return true; - - case PIPE_CAP_DEPTH_CLIP_DISABLE: - return screen->devinfo.ver >= 71; - - default: - return u_pipe_screen_get_param_defaults(pscreen, param); - } -} - -static float -v3d_screen_get_paramf(struct pipe_screen *pscreen, enum pipe_capf param) -{ - switch (param) { - case PIPE_CAPF_MIN_LINE_WIDTH: - case PIPE_CAPF_MIN_LINE_WIDTH_AA: - case PIPE_CAPF_MIN_POINT_SIZE: - case PIPE_CAPF_MIN_POINT_SIZE_AA: - return 1; - - case PIPE_CAPF_POINT_SIZE_GRANULARITY: - case PIPE_CAPF_LINE_WIDTH_GRANULARITY: - return 0.1; - - case PIPE_CAPF_MAX_LINE_WIDTH: - case PIPE_CAPF_MAX_LINE_WIDTH_AA: - return V3D_MAX_LINE_WIDTH; - - case PIPE_CAPF_MAX_POINT_SIZE: - case PIPE_CAPF_MAX_POINT_SIZE_AA: - return V3D_MAX_POINT_SIZE; - - case PIPE_CAPF_MAX_TEXTURE_ANISOTROPY: - return 16.0f; - case PIPE_CAPF_MAX_TEXTURE_LOD_BIAS: - return 16.0f; - - case PIPE_CAPF_MIN_CONSERVATIVE_RASTER_DILATE: - case PIPE_CAPF_MAX_CONSERVATIVE_RASTER_DILATE: - case PIPE_CAPF_CONSERVATIVE_RASTER_DILATE_GRANULARITY: - return 0.0f; - default: - fprintf(stderr, "unknown paramf %d\n", param); - return 0; - } -} - static int v3d_screen_get_shader_param(struct pipe_screen *pscreen, enum pipe_shader_type shader, enum pipe_shader_cap param) @@ -1084,8 +856,6 @@ v3d_screen_create(int fd, const struct pipe_screen_config *config, pscreen->destroy = v3d_screen_destroy; pscreen->get_screen_fd = v3d_screen_get_fd; - pscreen->get_param = v3d_screen_get_param; - pscreen->get_paramf = v3d_screen_get_paramf; pscreen->get_shader_param = v3d_screen_get_shader_param; pscreen->get_compute_param = v3d_get_compute_param; pscreen->context_create = v3d_context_create;