mesa: implement EXT_mesh_shader glGetActive* values
Reviewed-by: Marek Olšák <marek.olsak@amd.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36751>
This commit is contained in:
@@ -1247,6 +1247,10 @@ stage_from_enum(GLenum ref)
|
||||
return MESA_SHADER_FRAGMENT;
|
||||
case GL_REFERENCED_BY_COMPUTE_SHADER:
|
||||
return MESA_SHADER_COMPUTE;
|
||||
case GL_REFERENCED_BY_TASK_SHADER_EXT:
|
||||
return MESA_SHADER_TASK;
|
||||
case GL_REFERENCED_BY_MESH_SHADER_EXT:
|
||||
return MESA_SHADER_MESH;
|
||||
default:
|
||||
assert(!"shader stage not supported");
|
||||
return MESA_SHADER_MESH_STAGES;
|
||||
@@ -1549,15 +1553,22 @@ _mesa_program_resource_prop(struct gl_shader_program *shProg,
|
||||
case GL_NUM_ACTIVE_VARIABLES:
|
||||
case GL_ACTIVE_VARIABLES:
|
||||
return get_buffer_property(shProg, res, prop, val, glthread, caller);
|
||||
case GL_REFERENCED_BY_COMPUTE_SHADER:
|
||||
if (!_mesa_has_compute_shaders(ctx))
|
||||
goto invalid_enum;
|
||||
FALLTHROUGH;
|
||||
case GL_REFERENCED_BY_VERTEX_SHADER:
|
||||
case GL_REFERENCED_BY_TESS_CONTROL_SHADER:
|
||||
case GL_REFERENCED_BY_TESS_EVALUATION_SHADER:
|
||||
case GL_REFERENCED_BY_GEOMETRY_SHADER:
|
||||
case GL_REFERENCED_BY_FRAGMENT_SHADER:
|
||||
case GL_REFERENCED_BY_COMPUTE_SHADER:
|
||||
case GL_REFERENCED_BY_TASK_SHADER_EXT:
|
||||
case GL_REFERENCED_BY_MESH_SHADER_EXT:
|
||||
if (prop == GL_REFERENCED_BY_COMPUTE_SHADER) {
|
||||
if (!_mesa_has_compute_shaders(ctx))
|
||||
goto invalid_enum;
|
||||
} else if (prop == GL_REFERENCED_BY_TASK_SHADER_EXT ||
|
||||
prop == GL_REFERENCED_BY_MESH_SHADER_EXT) {
|
||||
if (!_mesa_has_EXT_mesh_shader(ctx))
|
||||
goto invalid_enum;
|
||||
}
|
||||
switch (res->Type) {
|
||||
case GL_UNIFORM:
|
||||
case GL_PROGRAM_INPUT:
|
||||
|
||||
@@ -1308,6 +1308,18 @@ mesa_bufferiv(struct gl_shader_program *shProg, GLenum type,
|
||||
GL_REFERENCED_BY_COMPUTE_SHADER, params,
|
||||
false, caller);
|
||||
return;
|
||||
case GL_UNIFORM_BLOCK_REFERENCED_BY_TASK_SHADER_EXT:
|
||||
case GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TASK_SHADER_EXT:
|
||||
_mesa_program_resource_prop(shProg, res, index,
|
||||
GL_REFERENCED_BY_TASK_SHADER_EXT, params,
|
||||
false, caller);
|
||||
return;
|
||||
case GL_UNIFORM_BLOCK_REFERENCED_BY_MESH_SHADER_EXT:
|
||||
case GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_MESH_SHADER_EXT:
|
||||
_mesa_program_resource_prop(shProg, res, index,
|
||||
GL_REFERENCED_BY_MESH_SHADER_EXT, params,
|
||||
false, caller);
|
||||
return;
|
||||
default:
|
||||
_mesa_error(ctx, GL_INVALID_ENUM,
|
||||
"%s(pname 0x%x (%s))", caller, pname,
|
||||
|
||||
Reference in New Issue
Block a user