mesa: add _mesa_get_and_validate_attachment() helper

Will be used to add KHR_no_error support. We make this available
external so it can be called from meta.

Reviewed-by: Eric Anholt <eric@anholt.net>
This commit is contained in:
Timothy Arceri
2017-05-05 16:46:03 +10:00
parent 786b9ad95b
commit d90ced445c
2 changed files with 30 additions and 12 deletions
+25 -12
View File
@@ -3188,25 +3188,22 @@ check_level(struct gl_context *ctx, GLenum target, GLint level,
}
void
_mesa_framebuffer_texture(struct gl_context *ctx, struct gl_framebuffer *fb,
GLenum attachment,
struct gl_texture_object *texObj, GLenum textarget,
GLint level, GLuint layer, GLboolean layered,
const char *caller)
struct gl_renderbuffer_attachment *
_mesa_get_and_validate_attachment(struct gl_context *ctx,
struct gl_framebuffer *fb,
GLenum attachment, const char *caller)
{
struct gl_renderbuffer_attachment *att;
bool is_color_attachment;
/* The window-system framebuffer object is immutable */
if (_mesa_is_winsys_fbo(fb)) {
_mesa_error(ctx, GL_INVALID_OPERATION, "%s(window-system framebuffer)",
caller);
return;
return NULL;
}
/* Not a hash lookup, so we can afford to get the attachment here. */
att = get_attachment(ctx, fb, attachment, &is_color_attachment);
bool is_color_attachment;
struct gl_renderbuffer_attachment *att =
get_attachment(ctx, fb, attachment, &is_color_attachment);
if (att == NULL) {
if (is_color_attachment) {
_mesa_error(ctx, GL_INVALID_OPERATION,
@@ -3217,9 +3214,25 @@ _mesa_framebuffer_texture(struct gl_context *ctx, struct gl_framebuffer *fb,
"%s(invalid attachment %s)", caller,
_mesa_enum_to_string(attachment));
}
return;
return NULL;
}
return att;
}
void
_mesa_framebuffer_texture(struct gl_context *ctx, struct gl_framebuffer *fb,
GLenum attachment,
struct gl_texture_object *texObj, GLenum textarget,
GLint level, GLuint layer, GLboolean layered,
const char *caller)
{
struct gl_renderbuffer_attachment *att =
_mesa_get_and_validate_attachment(ctx, fb, attachment, caller);
if (!att)
return;
FLUSH_VERTICES(ctx, _NEW_BUFFERS);
mtx_lock(&fb->Mutex);
+5
View File
@@ -119,6 +119,11 @@ _mesa_detach_renderbuffer(struct gl_context *ctx,
struct gl_framebuffer *fb,
const void *att);
extern struct gl_renderbuffer_attachment *
_mesa_get_and_validate_attachment(struct gl_context *ctx,
struct gl_framebuffer *fb,
GLenum attachment, const char *caller);
extern void
_mesa_framebuffer_texture(struct gl_context *ctx, struct gl_framebuffer *fb,
GLenum attachment,