From 0870859e3d3658ae7cc69201cfc4bbe41d93fbf5 Mon Sep 17 00:00:00 2001 From: Niklas Haas Date: Sat, 3 Feb 2018 17:07:55 +0100 Subject: [PATCH] vo_gpu: add RA_CAP for gl_NumWorkGroups SPIRV-Cross doesn't support this for the time being. It's possible this could go away again at a later date. --- video/out/gpu/ra.h | 1 + video/out/opengl/ra_gl.c | 1 + video/out/vulkan/ra_vk.c | 2 +- 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/video/out/gpu/ra.h b/video/out/gpu/ra.h index 34f3fb9b5c..f1037e45c3 100644 --- a/video/out/gpu/ra.h +++ b/video/out/gpu/ra.h @@ -54,6 +54,7 @@ enum { RA_CAP_GATHER = 1 << 9, // supports textureGather in GLSL RA_CAP_FRAGCOORD = 1 << 10, // supports reading from gl_FragCoord RA_CAP_PARALLEL_COMPUTE = 1 << 11, // supports parallel compute shaders + RA_CAP_NUM_GROUPS = 1 << 12, // supports gl_NumWorkGroups }; enum ra_ctype { diff --git a/video/out/opengl/ra_gl.c b/video/out/opengl/ra_gl.c index 72b411a16f..356ed81d03 100644 --- a/video/out/opengl/ra_gl.c +++ b/video/out/opengl/ra_gl.c @@ -101,6 +101,7 @@ static int ra_init_gl(struct ra *ra, GL *gl) {RA_CAP_TEX_1D, MPGL_CAP_1D_TEX}, {RA_CAP_TEX_3D, MPGL_CAP_3D_TEX}, {RA_CAP_COMPUTE, MPGL_CAP_COMPUTE_SHADER}, + {RA_CAP_NUM_GROUPS, MPGL_CAP_COMPUTE_SHADER}, {RA_CAP_NESTED_ARRAY, MPGL_CAP_NESTED_ARRAY}, }; diff --git a/video/out/vulkan/ra_vk.c b/video/out/vulkan/ra_vk.c index 5e6fae74ed..cffb895cfd 100644 --- a/video/out/vulkan/ra_vk.c +++ b/video/out/vulkan/ra_vk.c @@ -209,7 +209,7 @@ struct ra *ra_create_vk(struct mpvk_ctx *vk, struct mp_log *log) ra->max_pushc_size = vk->limits.maxPushConstantsSize; if (vk->pool_compute) { - ra->caps |= RA_CAP_COMPUTE; + ra->caps |= RA_CAP_COMPUTE | RA_CAP_NUM_GROUPS; // If we have more compute queues than graphics queues, we probably // want to be using them. (This seems mostly relevant for AMD) if (vk->pool_compute->num_queues > vk->pool_graphics->num_queues)