diff --git a/docs/features.txt b/docs/features.txt index d5a2e01cdd3..56308e1223a 100644 --- a/docs/features.txt +++ b/docs/features.txt @@ -36,35 +36,35 @@ context as extensions. Feature Status ------------------------------------------------------- ------------------------ -GL 3.0, GLSL 1.30 --- all DONE: freedreno, i965, nv50, nvc0, r600, radeonsi, llvmpipe, softpipe, virgl, zink, d3d12, panfrost +GL 3.0, GLSL 1.30 --- all DONE: freedreno, i965, nv50, nvc0, r600, radeonsi, llvmpipe, softpipe, virgl, zink, d3d12, panfrost, asahi glBindFragDataLocation, glGetFragDataLocation DONE - GL_NV_conditional_render (Conditional rendering) DONE (asahi, v3d) - GL_ARB_map_buffer_range (Map buffer subranges) DONE (v3d, vc4, lima, asahi) - GL_ARB_color_buffer_float (Clamping controls) DONE (v3d, vc4, lima, asahi) - GL_ARB_texture_float (Float textures, renderbuffers) DONE (v3d, asahi) - GL_EXT_packed_float DONE (v3d, asahi) - GL_EXT_texture_shared_exponent DONE (v3d, asahi) - GL_ARB_depth_buffer_float (Float depth buffers) DONE (v3d, asahi) - GL_ARB_framebuffer_object (Framebuffer objects) DONE (v3d, vc4, asahi) + GL_NV_conditional_render (Conditional rendering) DONE (v3d) + GL_ARB_map_buffer_range (Map buffer subranges) DONE (v3d, vc4, lima) + GL_ARB_color_buffer_float (Clamping controls) DONE (v3d, vc4, lima) + GL_ARB_texture_float (Float textures, renderbuffers) DONE (v3d) + GL_EXT_packed_float DONE (v3d) + GL_EXT_texture_shared_exponent DONE (v3d) + GL_ARB_depth_buffer_float (Float depth buffers) DONE (v3d) + GL_ARB_framebuffer_object (Framebuffer objects) DONE (v3d, vc4) GL_ARB_half_float_pixel DONE (all drivers) - GL_ARB_half_float_vertex DONE (v3d, vc4, lima, asahi) - GL_EXT_texture_integer DONE (v3d, asahi) - GL_EXT_texture_array DONE (v3d, asahi) - GL_EXT_draw_buffers2 (Per-buffer blend and masks) DONE (v3d, asahi) + GL_ARB_half_float_vertex DONE (v3d, vc4, lima) + GL_EXT_texture_integer DONE (v3d) + GL_EXT_texture_array DONE (v3d) + GL_EXT_draw_buffers2 (Per-buffer blend and masks) DONE (v3d) GL_EXT_texture_compression_rgtc DONE (all drivers that support GL_EXT_texture_snorm) - GL_ARB_texture_rg DONE (v3d, lima, asahi) - GL_EXT_transform_feedback (Transform feedback) DONE (v3d, asahi) - GL_ARB_vertex_array_object (Vertex array objects) DONE (v3d, vc4, lima, asahi) - GL_EXT_framebuffer_sRGB (sRGB framebuffer format) DONE (v3d, vc4, lima, asahi) + GL_ARB_texture_rg DONE (v3d, lima) + GL_EXT_transform_feedback (Transform feedback) DONE (v3d) + GL_ARB_vertex_array_object (Vertex array objects) DONE (v3d, vc4, lima) + GL_EXT_framebuffer_sRGB (sRGB framebuffer format) DONE (v3d, vc4, lima) glClearBuffer commands DONE glGetStringi command DONE glTexParameterI, glGetTexParameterI commands DONE glVertexAttribI commands DONE - Depth format cube textures DONE (asahi) - GLX_ARB_create_context (GLX 1.4 is required) DONE (v3d, vc4, asahi) + Depth format cube textures DONE () + GLX_ARB_create_context (GLX 1.4 is required) DONE (v3d, vc4) Multisample anti-aliasing DONE (freedreno/a5xx+, freedreno (*), llvmpipe (*), softpipe (*))) - 8 draw buffers DONE (panfrost/t760+, asahi) + 8 draw buffers DONE (panfrost/t760+) (*) freedreno (a2xx-a4xx), llvmpipe, and softpipe have fake Multisample anti-aliasing support @@ -91,7 +91,7 @@ GL 3.2, GLSL 1.50 --- all DONE: freedreno, i965, nv50, nvc0, r600, radeonsi, llv GL_ARB_fragment_coord_conventions (Frag shader coord) DONE (v3d, vc4, panfrost, lima, asahi) GL_ARB_provoking_vertex (Provoking vertex) DONE (v3d, vc4, panfrost, lima, asahi) GL_ARB_seamless_cube_map (Seamless cubemaps) DONE (panfrost, asahi) - GL_ARB_texture_multisample (Multisample textures) DONE (freedreno/a5xx+, v3d, vc4, panfrost) + GL_ARB_texture_multisample (Multisample textures) DONE (freedreno/a5xx+, v3d, vc4, panfrost, asahi) GL_ARB_depth_clamp (Frag depth clamp) DONE (panfrost, asahi) GL_ARB_sync (Fence objects) DONE (v3d, vc4, panfrost, lima, asahi) GLX_ARB_create_context_profile DONE @@ -99,7 +99,7 @@ GL 3.2, GLSL 1.50 --- all DONE: freedreno, i965, nv50, nvc0, r600, radeonsi, llv GL 3.3, GLSL 3.30 --- all DONE: freedreno, i965, nv50, nvc0, r600, radeonsi, llvmpipe, softpipe, virgl, zink, d3d12 - GL_ARB_blend_func_extended DONE (freedreno/a3xx, freedreno/a6xx, panfrost, lima) + GL_ARB_blend_func_extended DONE (freedreno/a3xx, freedreno/a6xx, panfrost, lima, asahi) GL_ARB_explicit_attrib_location DONE (all drivers that support GLSL) GL_ARB_occlusion_query2 DONE (v3d, panfrost, asahi) GL_ARB_sampler_objects DONE (all drivers) @@ -324,7 +324,7 @@ Khronos, ARB, and OES extensions that are not part of any OpenGL or OpenGL ES ve GL_EXT_memory_object DONE (freedreno, radeonsi, i965/gen7+, llvmpipe, zink, d3d12) GL_EXT_memory_object_fd DONE (freedreno, radeonsi, i965/gen7+, llvmpipe, zink) GL_EXT_memory_object_win32 DONE (zink, d3d12) - GL_EXT_multisampled_render_to_texture DONE (freedreno/a6xx, panfrost, zink, lima) + GL_EXT_multisampled_render_to_texture DONE (freedreno/a6xx, panfrost, zink, lima, asahi) GL_EXT_render_snorm DONE (freedreno/a6xx, i965, r600, radeonsi, softpipe, zink, panfrost/bifrost+) GL_EXT_semaphore DONE (radeonsi, i965/gen7+, zink, d3d12) GL_EXT_semaphore_fd DONE (radeonsi, i965/gen7+, zink) diff --git a/docs/relnotes/new_features.txt b/docs/relnotes/new_features.txt index 97a39cc5811..f0b0ade93fa 100644 --- a/docs/relnotes/new_features.txt +++ b/docs/relnotes/new_features.txt @@ -2,3 +2,5 @@ VK_EXT_attachment_feedback_loop_dynamic_state on RADV extendedDynamicState3SampleLocationsEnable on RADV VK_EXT_dynamic_rendering_unused_attachments on RADV VK_EXT_mesh_shader on lavapipe +OpenGL 3.1 on Asahi +OpenGL ES 3.0 on Asahi diff --git a/src/asahi/lib/agx_nir_lower_tilebuffer.c b/src/asahi/lib/agx_nir_lower_tilebuffer.c index f75a557783e..d4d5b9de7b5 100644 --- a/src/asahi/lib/agx_nir_lower_tilebuffer.c +++ b/src/asahi/lib/agx_nir_lower_tilebuffer.c @@ -29,7 +29,7 @@ tib_filter(const nir_instr *instr, UNUSED const void *_) return false; nir_io_semantics sem = nir_intrinsic_io_semantics(intr); - assert(sem.dual_source_blend_index == 0 && "todo: dual source blending"); + assert(sem.dual_source_blend_index == 0 && "dual source blending lowered"); return (sem.location >= FRAG_RESULT_DATA0); } diff --git a/src/gallium/drivers/asahi/agx_pipe.c b/src/gallium/drivers/asahi/agx_pipe.c index f2d0f5e1038..d92e26a0d51 100644 --- a/src/gallium/drivers/asahi/agx_pipe.c +++ b/src/gallium/drivers/asahi/agx_pipe.c @@ -1470,9 +1470,8 @@ agx_get_param(struct pipe_screen *pscreen, enum pipe_cap param) case PIPE_CAP_FBFETCH: case PIPE_CAP_FBFETCH_COHERENT: return 8; - case PIPE_CAP_MAX_DUAL_SOURCE_RENDER_TARGETS: - return 0; + return 1; case PIPE_CAP_OCCLUSION_QUERY: case PIPE_CAP_GENERATE_MIPMAP: @@ -1508,7 +1507,11 @@ agx_get_param(struct pipe_screen *pscreen, enum pipe_cap param) case PIPE_CAP_TEXTURE_MULTISAMPLE: case PIPE_CAP_SURFACE_SAMPLE_COUNT: + return 1; case PIPE_CAP_SAMPLE_SHADING: + /* TODO: sample shading */ + return 0; + case PIPE_CAP_IMAGE_LOAD_FORMATTED: case PIPE_CAP_IMAGE_STORE_FORMATTED: case PIPE_CAP_COMPUTE: @@ -1534,9 +1537,9 @@ 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 : 130; + return is_deqp ? 330 : 140; case PIPE_CAP_ESSL_FEATURE_LEVEL: - return is_deqp ? 320 : 120; + return is_deqp ? 310 : 300; case PIPE_CAP_CONSTANT_BUFFER_OFFSET_ALIGNMENT: return 16; @@ -1851,10 +1854,7 @@ agx_is_format_supported(struct pipe_screen *pscreen, enum pipe_format format, target == PIPE_TEXTURE_3D || target == PIPE_TEXTURE_CUBE || target == PIPE_TEXTURE_CUBE_ARRAY); - bool is_deqp = agx_device(pscreen)->debug & AGX_DBG_DEQP; - - if (sample_count > 1 && - (!is_deqp || (sample_count != 4 && sample_count != 2))) + if (sample_count > 1 && sample_count != 4 && sample_count != 2) return false; if (MAX2(sample_count, 1) != MAX2(storage_sample_count, 1))