asahi: Advertise GL 3.1

We now have support for baseline MSAA, except for support for eMRT. But hey,
this gets us 99% of the way there, so it's worth flipping on at least in
agx/next.

We can also advertise dual-source blending again. It was reverted since Chromium
freaks out with dual-source blending on a GL 2.1 driver, but since we're
advertising GL 3.1 now, it's ok.

Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/23480>
This commit is contained in:
Alyssa Rosenzweig 2023-05-25 13:22:53 -04:00 committed by Marge Bot
parent 8d019125a0
commit be5004691c
4 changed files with 34 additions and 32 deletions

View file

@ -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)

View file

@ -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

View file

@ -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);
}

View file

@ -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))