mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-01 20:30:12 +01:00
r600g: add assertions to prevent creation of invalid surfaces
This commit is contained in:
parent
fefa2112bf
commit
ef11ed61a0
3 changed files with 18 additions and 16 deletions
|
|
@ -98,22 +98,6 @@ static void r600_blitter_end(struct pipe_context *ctx)
|
|||
r600_resume_nontimer_queries(rctx);
|
||||
}
|
||||
|
||||
static unsigned u_max_layer(struct pipe_resource *r, unsigned level)
|
||||
{
|
||||
switch (r->target) {
|
||||
case PIPE_TEXTURE_CUBE:
|
||||
return 6 - 1;
|
||||
case PIPE_TEXTURE_3D:
|
||||
return u_minify(r->depth0, level) - 1;
|
||||
case PIPE_TEXTURE_1D_ARRAY:
|
||||
case PIPE_TEXTURE_2D_ARRAY:
|
||||
case PIPE_TEXTURE_CUBE_ARRAY:
|
||||
return r->array_size - 1;
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
static unsigned u_max_sample(struct pipe_resource *r)
|
||||
{
|
||||
return r->nr_samples ? r->nr_samples - 1 : 0;
|
||||
|
|
|
|||
|
|
@ -920,4 +920,20 @@ static INLINE uint64_t r600_resource_va(struct pipe_screen *screen, struct pipe_
|
|||
return rscreen->ws->buffer_get_virtual_address(rresource->cs_buf);
|
||||
}
|
||||
|
||||
static INLINE unsigned u_max_layer(struct pipe_resource *r, unsigned level)
|
||||
{
|
||||
switch (r->target) {
|
||||
case PIPE_TEXTURE_CUBE:
|
||||
return 6 - 1;
|
||||
case PIPE_TEXTURE_3D:
|
||||
return u_minify(r->depth0, level) - 1;
|
||||
case PIPE_TEXTURE_1D_ARRAY:
|
||||
case PIPE_TEXTURE_2D_ARRAY:
|
||||
case PIPE_TEXTURE_CUBE_ARRAY:
|
||||
return r->array_size - 1;
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -558,6 +558,8 @@ struct pipe_surface *r600_create_surface_custom(struct pipe_context *pipe,
|
|||
{
|
||||
struct r600_surface *surface = CALLOC_STRUCT(r600_surface);
|
||||
|
||||
assert(templ->u.tex.first_layer <= u_max_layer(texture, templ->u.tex.level));
|
||||
assert(templ->u.tex.last_layer <= u_max_layer(texture, templ->u.tex.level));
|
||||
assert(templ->u.tex.first_layer == templ->u.tex.last_layer);
|
||||
if (surface == NULL)
|
||||
return NULL;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue