diff --git a/docs/features.txt b/docs/features.txt index 665299df395..9c26e2a3266 100644 --- a/docs/features.txt +++ b/docs/features.txt @@ -82,18 +82,18 @@ GL 3.1, GLSL 1.40 --- all DONE: freedreno, nv50, nvc0, r600, radeonsi, llvmpipe, GL_EXT_texture_snorm (Signed normalized textures) DONE (v3d, crocus) -GL 3.2, GLSL 1.50 --- all DONE: freedreno, nv50, nvc0, r600, radeonsi, llvmpipe, softpipe, virgl, zink, d3d12, iris, crocus/gen6+ +GL 3.2, GLSL 1.50 --- all DONE: freedreno, nv50, nvc0, r600, radeonsi, llvmpipe, softpipe, virgl, zink, d3d12, iris, crocus/gen6+, asahi Core/compatibility profiles DONE Geometry shaders DONE (freedreno/a6xx, crocus) - GL_ARB_vertex_array_bgra (BGRA vertex order) DONE (v3d, panfrost, asahi, crocus) - GL_ARB_draw_elements_base_vertex (Base vertex offset) DONE (v3d, vc4, panfrost, lima, asahi, crocus) - GL_ARB_fragment_coord_conventions (Frag shader coord) DONE (v3d, vc4, panfrost, lima, asahi, crocus) - GL_ARB_provoking_vertex (Provoking vertex) DONE (v3d, vc4, panfrost, lima, asahi, crocus) - GL_ARB_seamless_cube_map (Seamless cubemaps) DONE (panfrost, asahi, crocus) + GL_ARB_vertex_array_bgra (BGRA vertex order) DONE (v3d, panfrost, crocus) + GL_ARB_draw_elements_base_vertex (Base vertex offset) DONE (v3d, vc4, panfrost, lima, crocus) + GL_ARB_fragment_coord_conventions (Frag shader coord) DONE (v3d, vc4, panfrost, lima, crocus) + GL_ARB_provoking_vertex (Provoking vertex) DONE (v3d, vc4, panfrost, lima, crocus) + GL_ARB_seamless_cube_map (Seamless cubemaps) DONE (panfrost, crocus) GL_ARB_texture_multisample (Multisample textures) DONE (freedreno/a5xx+, v3d, vc4, panfrost, asahi) - GL_ARB_depth_clamp (Frag depth clamp) DONE (panfrost, asahi, crocus) - GL_ARB_sync (Fence objects) DONE (v3d, vc4, panfrost, lima, asahi, crocus) + GL_ARB_depth_clamp (Frag depth clamp) DONE (panfrost, crocus) + GL_ARB_sync (Fence objects) DONE (v3d, vc4, panfrost, lima, crocus) GLX_ARB_create_context_profile DONE @@ -123,8 +123,8 @@ GL 4.0, GLSL 4.00 --- all DONE: freedreno/a6xx, nvc0, r600, radeonsi, llvmpipe, - Fused multiply-add DONE (softpipe, asahi) - Packing/bitfield/conversion functions DONE (freedreno, softpipe, panfrost, asahi) - Enhanced textureGather DONE (freedreno, softpipe, panfrost, asahi) - - Geometry shader instancing DONE (softpipe, ) - - Geometry shader multiple streams DONE (softpipe, ) + - Geometry shader instancing DONE (softpipe, asahi) + - Geometry shader multiple streams DONE (softpipe, asahi) - Enhanced per-sample shading DONE (asahi) - Interpolation functions DONE (softpipe, asahi) - New overload resolution rules DONE (softpipe) @@ -133,7 +133,7 @@ GL 4.0, GLSL 4.00 --- all DONE: freedreno/a6xx, nvc0, r600, radeonsi, llvmpipe, GL_ARB_shader_subroutine DONE (freedreno, nv50, softpipe, crocus/gen6+) GL_ARB_tessellation_shader DONE (freedreno/a6xx) GL_ARB_texture_buffer_object_rgb32 DONE (freedreno, softpipe, panfrost, asahi, crocus/gen6+) - GL_ARB_texture_cube_map_array DONE (freedreno/a4xx+, nv50, softpipe, v3d, crocus/gen6+) + GL_ARB_texture_cube_map_array DONE (freedreno/a4xx+, nv50, softpipe, v3d, crocus/gen6+, asahi) GL_ARB_texture_gather DONE (freedreno, nv50, softpipe, v3d, panfrost, asahi) GL_ARB_texture_query_lod DONE (freedreno, nv50, softpipe, v3d, panfrost, crocus/gen5+) GL_ARB_transform_feedback2 DONE (freedreno/a3xx+, nv50, softpipe, v3d, panfrost, asahi, crocus/gen6+) @@ -278,7 +278,7 @@ GLES3.2, GLSL ES 3.2 -- all DONE: freedreno/a6xx, radeonsi, virgl, llvmpipe, zin GL_OES_copy_image DONE (all drivers) GL_OES_draw_buffers_indexed DONE (all drivers that support GL_ARB_draw_buffers_blend) GL_OES_draw_elements_base_vertex DONE (all drivers) - GL_OES_geometry_shader DONE (freedreno/a6xx, nvc0, r600, softpipe, v3d) + GL_OES_geometry_shader DONE (freedreno/a6xx, nvc0, r600, softpipe, v3d, asahi) GL_OES_gpu_shader5 DONE (freedreno/a6xx, asahi, all drivers that support GL_ARB_gpu_shader5) GL_OES_primitive_bounding_box DONE (freedreno/a5xx+, nvc0, r600, softpipe, v3d) GL_OES_sample_shading DONE (freedreno/a6xx, asahi, nvc0, r600, panfrost, d3d12) @@ -289,7 +289,7 @@ GLES3.2, GLSL ES 3.2 -- all DONE: freedreno/a6xx, radeonsi, virgl, llvmpipe, zin GL_OES_tessellation_shader DONE (freedreno/a6xx, all drivers that support GL_ARB_tessellation_shader) GL_OES_texture_border_clamp DONE (all drivers) GL_OES_texture_buffer DONE (freedreno, nvc0, r600, softpipe, panfrost, asahi, crocus/gen6+) - GL_OES_texture_cube_map_array DONE (freedreno/a4xx+, nvc0, r600, softpipe) + GL_OES_texture_cube_map_array DONE (freedreno/a4xx+, nvc0, r600, softpipe, asahi) GL_OES_texture_stencil8 DONE (all drivers that support GL_ARB_texture_stencil8) GL_OES_texture_storage_multisample_2d_array DONE (all drivers that support GL_ARB_texture_multisample) diff --git a/docs/relnotes/new_features.txt b/docs/relnotes/new_features.txt index 355086eae22..75dbb78eaae 100644 --- a/docs/relnotes/new_features.txt +++ b/docs/relnotes/new_features.txt @@ -2,3 +2,6 @@ New features ------------ VK_EXT_image_compression_control on RADV VK_EXT_device_fault on RADV +OpenGL 3.2 on Asahi +Geometry shaders on Asahi +GL_ARB_texture_cube_map_array on Asahi diff --git a/src/gallium/drivers/asahi/agx_pipe.c b/src/gallium/drivers/asahi/agx_pipe.c index eb9e286caa8..6bf5e892c66 100644 --- a/src/gallium/drivers/asahi/agx_pipe.c +++ b/src/gallium/drivers/asahi/agx_pipe.c @@ -1555,8 +1555,6 @@ agx_get_name(struct pipe_screen *pscreen) static int agx_get_param(struct pipe_screen *pscreen, enum pipe_cap param) { - bool is_deqp = agx_device(pscreen)->debug & AGX_DBG_DEQP; - switch (param) { case PIPE_CAP_NPOT_TEXTURES: case PIPE_CAP_SHADER_STENCIL_EXPORT: @@ -1636,7 +1634,7 @@ agx_get_param(struct pipe_screen *pscreen, enum pipe_cap param) return 0; case PIPE_CAP_CUBE_MAP_ARRAY: - return is_deqp; + return 1; case PIPE_CAP_COPY_BETWEEN_COMPRESSED_AND_PLAIN_FORMATS: return 0; @@ -1657,10 +1655,19 @@ agx_get_param(struct pipe_screen *pscreen, enum pipe_cap param) case PIPE_CAP_GLSL_FEATURE_LEVEL: case PIPE_CAP_GLSL_FEATURE_LEVEL_COMPATIBILITY: - return is_deqp ? 330 : 140; + return 330; case PIPE_CAP_ESSL_FEATURE_LEVEL: return 320; + /* Settings from iris, may need tuning */ + case PIPE_CAP_MAX_VERTEX_STREAMS: + return 4; + case PIPE_CAP_MAX_GEOMETRY_OUTPUT_VERTICES: + return 256; + case PIPE_CAP_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS: + return 1024; + case PIPE_CAP_MAX_GS_INVOCATIONS: + return 32; case PIPE_CAP_CONSTANT_BUFFER_OFFSET_ALIGNMENT: return 16; @@ -1749,13 +1756,17 @@ agx_get_param(struct pipe_screen *pscreen, enum pipe_cap param) BITFIELD_BIT(MESA_PRIM_TRIANGLES) | BITFIELD_BIT(MESA_PRIM_TRIANGLE_STRIP) | BITFIELD_BIT(MESA_PRIM_TRIANGLE_FAN) | + BITFIELD_BIT(MESA_PRIM_LINES_ADJACENCY) | + BITFIELD_BIT(MESA_PRIM_LINE_STRIP_ADJACENCY) | + BITFIELD_BIT(MESA_PRIM_TRIANGLES_ADJACENCY) | + BITFIELD_BIT(MESA_PRIM_TRIANGLE_STRIP_ADJACENCY) | BITFIELD_BIT(MESA_PRIM_QUADS) | BITFIELD_BIT(MESA_PRIM_QUAD_STRIP); case PIPE_CAP_MAP_UNSYNCHRONIZED_THREAD_SAFE: return 1; case PIPE_CAP_VS_LAYER_VIEWPORT: - return is_deqp; + return true; default: return u_pipe_screen_get_param_defaults(pscreen, param); @@ -1811,6 +1822,7 @@ agx_get_shader_param(struct pipe_screen *pscreen, enum pipe_shader_type shader, case PIPE_SHADER_VERTEX: case PIPE_SHADER_FRAGMENT: case PIPE_SHADER_COMPUTE: + case PIPE_SHADER_GEOMETRY: break; default: return false; @@ -1819,7 +1831,8 @@ agx_get_shader_param(struct pipe_screen *pscreen, enum pipe_shader_type shader, /* Don't allow side effects with vertex processing. The APIs don't require it * and it may be problematic on our hardware. */ - bool allow_side_effects = (shader != PIPE_SHADER_VERTEX); + bool allow_side_effects = + (shader == PIPE_SHADER_FRAGMENT) || (shader == PIPE_SHADER_COMPUTE); /* this is probably not totally correct.. but it's a start: */ switch (param) {