diff --git a/docs/features.txt b/docs/features.txt index c6ef30118be..6f27a6575d3 100644 --- a/docs/features.txt +++ b/docs/features.txt @@ -176,7 +176,7 @@ GL 4.3, GLSL 4.30 -- all DONE: freedreno/a6xx, nvc0, r600, radeonsi, llvmpipe, v GL_KHR_debug DONE (all drivers) GL_ARB_explicit_uniform_location DONE (all drivers that support GLSL) GL_ARB_fragment_layer_viewport DONE (freedreno/a6xx, nv50, softpipe, crocus/gen6+) - GL_ARB_framebuffer_no_attachments DONE (freedreno, softpipe, v3d, crocus/gen7+) + GL_ARB_framebuffer_no_attachments DONE (freedreno, softpipe, v3d, crocus/gen7+, etnaviv) GL_ARB_internalformat_query2 DONE (all drivers) GL_ARB_invalidate_subdata DONE (all drivers) GL_ARB_multi_draw_indirect DONE (freedreno, softpipe, v3d, crocus/gen7+) @@ -246,7 +246,7 @@ GLES3.1, GLSL ES 3.1 -- all DONE: freedreno/a5xx+, nvc0, r600, radeonsi, virgl, GL_ARB_compute_shader DONE (freedreno/a5xx+, crocus/gen7+) GL_ARB_draw_indirect DONE (freedreno, crocus/gen7+) GL_ARB_explicit_uniform_location DONE (all drivers that support GLSL) - GL_ARB_framebuffer_no_attachments DONE (freedreno, softpipe, crocus/gen7+) + GL_ARB_framebuffer_no_attachments DONE (freedreno, softpipe, crocus/gen7+, etnaviv) GL_ARB_program_interface_query DONE (all drivers) GL_ARB_shader_atomic_counters DONE (freedreno/a5xx+, crocus/gen7+) GL_ARB_shader_image_load_store DONE (freedreno/a5xx+, crocus/gen7+) diff --git a/docs/relnotes/new_features.txt b/docs/relnotes/new_features.txt index 06d44f65c6c..1ac837b15a4 100644 --- a/docs/relnotes/new_features.txt +++ b/docs/relnotes/new_features.txt @@ -26,3 +26,4 @@ GL_ARB_draw_buffers_blend on etnaviv/HALTI5+ VK_KHR_fragment_shading_rate on NVK GL_ARB_draw_indirect on etnaviv/HALTI5+ VK_EXT_depth_clamp_zero_one on NVK +GL_ARB_framebuffer_no_attachments on etnaviv diff --git a/src/gallium/drivers/etnaviv/etnaviv_screen.c b/src/gallium/drivers/etnaviv/etnaviv_screen.c index 65f7c864418..25fc8efe864 100644 --- a/src/gallium/drivers/etnaviv/etnaviv_screen.c +++ b/src/gallium/drivers/etnaviv/etnaviv_screen.c @@ -168,6 +168,7 @@ etna_screen_get_param(struct pipe_screen *pscreen, enum pipe_cap param) case PIPE_CAP_MIXED_FRAMEBUFFER_SIZES: case PIPE_CAP_STRING_MARKER: case PIPE_CAP_FRONTEND_NOOP: + case PIPE_CAP_FRAMEBUFFER_NO_ATTACHMENT: return 1; case PIPE_CAP_VERTEX_INPUT_ALIGNMENT: return PIPE_VERTEX_INPUT_ALIGNMENT_4BYTE; @@ -615,6 +616,10 @@ etna_screen_is_format_supported(struct pipe_screen *pscreen, if (MAX2(1, sample_count) != MAX2(1, storage_sample_count)) return false; + /* For ARB_framebuffer_no_attachments - Short-circuit the rest of the logic. */ + if (format == PIPE_FORMAT_NONE && usage & PIPE_BIND_RENDER_TARGET) + return true; + if (usage & PIPE_BIND_RENDER_TARGET) { if (gpu_supports_render_format(screen, format, sample_count)) allowed |= PIPE_BIND_RENDER_TARGET;