mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2024-12-14 12:44:04 +08:00
asahi: Advertise geometry shaders
and cube arrays. Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26056>
This commit is contained in:
parent
c6a118b654
commit
3270556eaa
@ -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)
|
||||
|
||||
|
@ -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
|
||||
|
@ -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) {
|
||||
|
Loading…
Reference in New Issue
Block a user