mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-08 15:38:09 +02:00
mesa: allow setting of patch parameters.
Based on a patch from Fabian Bieler <fabianbieler@fastmail.fm>. Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
This commit is contained in:
parent
e32e546c17
commit
cb0c12512c
2 changed files with 47 additions and 2 deletions
|
|
@ -4161,6 +4161,11 @@ struct gl_driver_flags
|
|||
* gl_context::ImageUnits
|
||||
*/
|
||||
uint64_t NewImageUnits;
|
||||
|
||||
/**
|
||||
* gl_context::TessCtrlProgram::patch_default_*
|
||||
*/
|
||||
uint64_t NewDefaultTessLevels;
|
||||
};
|
||||
|
||||
struct gl_uniform_buffer_binding
|
||||
|
|
|
|||
|
|
@ -1999,13 +1999,53 @@ _mesa_CreateShaderProgramv(GLenum type, GLsizei count,
|
|||
extern void GLAPIENTRY
|
||||
_mesa_PatchParameteri(GLenum pname, GLint value)
|
||||
{
|
||||
/* STUB */
|
||||
GET_CURRENT_CONTEXT(ctx);
|
||||
|
||||
if (!_mesa_has_tessellation(ctx)) {
|
||||
_mesa_error(ctx, GL_INVALID_OPERATION, "glPatchParameteri");
|
||||
return;
|
||||
}
|
||||
|
||||
if (pname != GL_PATCH_VERTICES) {
|
||||
_mesa_error(ctx, GL_INVALID_ENUM, "glPatchParameteri");
|
||||
return;
|
||||
}
|
||||
|
||||
if (value <= 0 || value > ctx->Const.MaxPatchVertices) {
|
||||
_mesa_error(ctx, GL_INVALID_VALUE, "glPatchParameteri");
|
||||
return;
|
||||
}
|
||||
|
||||
ctx->TessCtrlProgram.patch_vertices = value;
|
||||
}
|
||||
|
||||
|
||||
extern void GLAPIENTRY
|
||||
_mesa_PatchParameterfv(GLenum pname, const GLfloat *values)
|
||||
{
|
||||
/* STUB */
|
||||
GET_CURRENT_CONTEXT(ctx);
|
||||
|
||||
if (!_mesa_has_tessellation(ctx)) {
|
||||
_mesa_error(ctx, GL_INVALID_OPERATION, "glPatchParameterfv");
|
||||
return;
|
||||
}
|
||||
|
||||
switch(pname) {
|
||||
case GL_PATCH_DEFAULT_OUTER_LEVEL:
|
||||
FLUSH_VERTICES(ctx, 0);
|
||||
memcpy(ctx->TessCtrlProgram.patch_default_outer_level, values,
|
||||
4 * sizeof(GLfloat));
|
||||
ctx->NewDriverState |= ctx->DriverFlags.NewDefaultTessLevels;
|
||||
return;
|
||||
case GL_PATCH_DEFAULT_INNER_LEVEL:
|
||||
FLUSH_VERTICES(ctx, 0);
|
||||
memcpy(ctx->TessCtrlProgram.patch_default_inner_level, values,
|
||||
2 * sizeof(GLfloat));
|
||||
ctx->NewDriverState |= ctx->DriverFlags.NewDefaultTessLevels;
|
||||
return;
|
||||
default:
|
||||
_mesa_error(ctx, GL_INVALID_ENUM, "glPatchParameterfv");
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue