lima: Implement texture_barrier

Improves x11perf -copywinwin100 from ~1520/sec to ~3700/sec

Reviewed-by: Qiang Yu <yuq825@gmail.com>
Reviewed-by: Erico Nunes <nunes.erico@gmail.com>
Signed-off-by: Vasily Khoruzhick <anarsoul@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16658>
This commit is contained in:
Vasily Khoruzhick 2022-05-22 14:13:45 -07:00 committed by Marge Bot
parent ee2278de65
commit 73851e3f44
3 changed files with 11 additions and 1 deletions

View File

@ -220,7 +220,7 @@ GL 4.5, GLSL 4.50 -- all DONE: nvc0, r600, radeonsi, llvmpipe, zink
GL_ARB_direct_state_access DONE (all drivers)
GL_ARB_get_texture_sub_image DONE (all drivers)
GL_ARB_shader_texture_image_samples DONE (i965, nv50, virgl)
GL_ARB_texture_barrier DONE (freedreno, i965, nv50, vc4, virgl)
GL_ARB_texture_barrier DONE (freedreno, i965, nv50, vc4, virgl, lima)
GL_KHR_context_flush_control DONE (all - but needs GLX/EGL extension to be useful)
GL_KHR_robustness DONE (freedreno, i965, virgl)
GL_EXT_shader_integer_mix DONE (all drivers that support GLSL)

View File

@ -1112,6 +1112,14 @@ lima_pipe_flush(struct pipe_context *pctx, struct pipe_fence_handle **fence,
}
}
static void
lima_texture_barrier(struct pipe_context *pctx, unsigned flags)
{
struct lima_context *ctx = lima_context(pctx);
lima_flush(ctx);
}
static bool
lima_job_compare(const void *s1, const void *s2)
{
@ -1146,6 +1154,7 @@ bool lima_job_init(struct lima_context *ctx)
}
ctx->base.flush = lima_pipe_flush;
ctx->base.texture_barrier = lima_texture_barrier;
return true;
}

View File

@ -106,6 +106,7 @@ lima_screen_get_param(struct pipe_screen *pscreen, enum pipe_cap param)
case PIPE_CAP_FRAGMENT_SHADER_TEXTURE_LOD:
case PIPE_CAP_TEXTURE_SWIZZLE:
case PIPE_CAP_VERTEX_COLOR_UNCLAMPED:
case PIPE_CAP_TEXTURE_BARRIER:
return 1;
/* Unimplemented, but for exporting OpenGL 2.0 */