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.
This commit is contained in:
Niklas Haas 2018-02-03 17:07:55 +01:00 committed by Kevin Mitchell
parent 5997248505
commit 0870859e3d
3 changed files with 3 additions and 1 deletions

View File

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

View File

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

View File

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