mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-06 09:28:07 +02:00
virgl: Set sRGB write control CAP based on host capabilities
v2: - Use the renamed CAPS
- add assetions to make sure that mesa doesn't try to switch
destination surface formats when it is not supported. (Ilia Mirkin)
Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Reviewed-by: Gurchetan Singh <gurchetansingh@chromium.org>
This commit is contained in:
parent
8021f1875e
commit
2845939d6a
3 changed files with 13 additions and 0 deletions
|
|
@ -229,6 +229,11 @@ static struct pipe_surface *virgl_create_surface(struct pipe_context *ctx,
|
||||||
if (!surf)
|
if (!surf)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
|
assert(ctx->screen->get_param(ctx->screen,
|
||||||
|
PIPE_CAP_DEST_SURFACE_SRGB_CONTROL) ||
|
||||||
|
(util_format_is_srgb(templ->format) ==
|
||||||
|
util_format_is_srgb(resource->format)));
|
||||||
|
|
||||||
res->clean = FALSE;
|
res->clean = FALSE;
|
||||||
handle = virgl_object_assign_handle();
|
handle = virgl_object_assign_handle();
|
||||||
pipe_reference_init(&surf->base.reference, 1);
|
pipe_reference_init(&surf->base.reference, 1);
|
||||||
|
|
@ -990,6 +995,11 @@ static void virgl_blit(struct pipe_context *ctx,
|
||||||
struct virgl_resource *dres = virgl_resource(blit->dst.resource);
|
struct virgl_resource *dres = virgl_resource(blit->dst.resource);
|
||||||
struct virgl_resource *sres = virgl_resource(blit->src.resource);
|
struct virgl_resource *sres = virgl_resource(blit->src.resource);
|
||||||
|
|
||||||
|
assert(ctx->screen->get_param(ctx->screen,
|
||||||
|
PIPE_CAP_DEST_SURFACE_SRGB_CONTROL) ||
|
||||||
|
(util_format_is_srgb(blit->dst.resource->format) ==
|
||||||
|
util_format_is_srgb(blit->dst.format)));
|
||||||
|
|
||||||
dres->clean = FALSE;
|
dres->clean = FALSE;
|
||||||
virgl_encode_blit(vctx, dres, sres,
|
virgl_encode_blit(vctx, dres, sres,
|
||||||
blit);
|
blit);
|
||||||
|
|
|
||||||
|
|
@ -232,6 +232,7 @@ enum virgl_formats {
|
||||||
#define VIRGL_CAP_TEXTURE_BARRIER (1 << 12)
|
#define VIRGL_CAP_TEXTURE_BARRIER (1 << 12)
|
||||||
#define VIRGL_CAP_TGSI_COMPONENTS (1 << 13)
|
#define VIRGL_CAP_TGSI_COMPONENTS (1 << 13)
|
||||||
#define VIRGL_CAP_GUEST_MAY_INIT_LOG (1 << 14)
|
#define VIRGL_CAP_GUEST_MAY_INIT_LOG (1 << 14)
|
||||||
|
#define VIRGL_CAP_SRGB_WRITE_CONTROL (1 << 15)
|
||||||
|
|
||||||
/* virgl bind flags - these are compatible with mesa 10.5 gallium.
|
/* virgl bind flags - these are compatible with mesa 10.5 gallium.
|
||||||
* but are fixed, no other should be passed to virgl either.
|
* but are fixed, no other should be passed to virgl either.
|
||||||
|
|
|
||||||
|
|
@ -342,6 +342,8 @@ virgl_get_param(struct pipe_screen *screen, enum pipe_cap param)
|
||||||
return 0;
|
return 0;
|
||||||
case PIPE_CAP_NATIVE_FENCE_FD:
|
case PIPE_CAP_NATIVE_FENCE_FD:
|
||||||
return vscreen->vws->supports_fences;
|
return vscreen->vws->supports_fences;
|
||||||
|
case PIPE_CAP_DEST_SURFACE_SRGB_CONTROL:
|
||||||
|
return vscreen->caps.caps.v2.capability_bits & VIRGL_CAP_SRGB_WRITE_CONTROL;
|
||||||
default:
|
default:
|
||||||
return u_pipe_screen_get_param_defaults(screen, param);
|
return u_pipe_screen_get_param_defaults(screen, param);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue