mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-08 09:08:10 +02:00
nv50,nvc0: reject R8G8B8A8/X8_UNORM for multisample surfaces
The window system buffer will be BGRA and applications will try to directly resolve to it, which would trigger an INVALID_OPERATION in BlitFramebuffer if the multisample renderbuffer is RGBA.
This commit is contained in:
parent
fb92fc25b0
commit
9f4998639c
2 changed files with 17 additions and 2 deletions
|
|
@ -43,7 +43,7 @@ nv50_screen_is_format_supported(struct pipe_screen *pscreen,
|
|||
unsigned sample_count,
|
||||
unsigned bindings)
|
||||
{
|
||||
if (sample_count > 2 && sample_count != 4 && sample_count != 8)
|
||||
if (!(0x117 & (1 << sample_count))) /* 0, 1, 2, 4 or 8 */
|
||||
return FALSE;
|
||||
if (sample_count == 8 && util_format_get_blocksizebits(format) >= 128)
|
||||
return FALSE;
|
||||
|
|
@ -56,6 +56,11 @@ nv50_screen_is_format_supported(struct pipe_screen *pscreen,
|
|||
if (nv50_screen(pscreen)->tesla->grclass < NVA0_3D)
|
||||
return FALSE;
|
||||
break;
|
||||
case PIPE_FORMAT_R8G8B8A8_UNORM:
|
||||
case PIPE_FORMAT_R8G8B8X8_UNORM:
|
||||
/* HACK: GL requires equal formats for MS resolve and window is BGRA */
|
||||
if (sample_count > 1)
|
||||
return FALSE;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -40,12 +40,22 @@ nvc0_screen_is_format_supported(struct pipe_screen *pscreen,
|
|||
unsigned sample_count,
|
||||
unsigned bindings)
|
||||
{
|
||||
if (sample_count > 2 && sample_count != 4 && sample_count != 8)
|
||||
if (!(0x117 & (1 << sample_count))) /* 0, 1, 2, 4 or 8 */
|
||||
return FALSE;
|
||||
|
||||
if (!util_format_is_supported(format, bindings))
|
||||
return FALSE;
|
||||
|
||||
switch (format) {
|
||||
case PIPE_FORMAT_R8G8B8A8_UNORM:
|
||||
case PIPE_FORMAT_R8G8B8X8_UNORM:
|
||||
/* HACK: GL requires equal formats for MS resolve and window is BGRA */
|
||||
if (sample_count > 1)
|
||||
return FALSE;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
/* transfers & shared are always supported */
|
||||
bindings &= ~(PIPE_BIND_TRANSFER_READ |
|
||||
PIPE_BIND_TRANSFER_WRITE |
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue