zink: fix null buffer/surface formats
4-component formats are needed here in order to return the correct alpha value in invalid load scenarios cc: mesa-stable fixes: spec@arb_shader_image_load_store@invalid Reviewed-by: Dave Airlie <airlied@redhat.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16167>
This commit is contained in:
parent
7767b2f7b5
commit
ae369e9f6d
|
@ -343,9 +343,6 @@ spec@arb_shader_image_load_store@early-z@occlusion query test/early-z pass,Fail
|
|||
spec@arb_shader_image_load_store@execution@image-array-out-of-bounds-access-load,Crash
|
||||
spec@arb_shader_image_load_store@execution@image-array-out-of-bounds-access-store,Crash
|
||||
|
||||
spec@arb_shader_image_load_store@invalid,Fail
|
||||
spec@arb_shader_image_load_store@invalid@imageLoad/incompatible format test/imageBuffer,Fail
|
||||
|
||||
spec@arb_tessellation_shader@execution@tcs-tes-levels-out-of-bounds-read,Crash
|
||||
spec@arb_tessellation_shader@execution@tcs-tes-levels-out-of-bounds-write,Crash
|
||||
|
||||
|
@ -354,7 +351,6 @@ spec@khr_texture_compression_astc@array-gles@12x12 Block Dim,Fail
|
|||
spec@khr_texture_compression_astc@array-gles@5x5 Block Dim,Fail
|
||||
spec@oes_egl_image_external_essl3@oes_egl_image_external_essl3,Fail
|
||||
spec@oes_egl_image_external_essl3@oes_egl_image_external_essl3@oes_egl_image_external_essl3_imageLoad,Fail
|
||||
spec@oes_egl_image_external_essl3@oes_egl_image_external_essl3@oes_egl_image_external_essl3_imageStore,Fail
|
||||
|
||||
|
||||
#literally no driver can pass these
|
||||
|
|
|
@ -2034,7 +2034,7 @@ get_render_pass(struct zink_context *ctx)
|
|||
state.msaa_expand_mask |= BITFIELD_BIT(i);
|
||||
}
|
||||
} else {
|
||||
state.rts[i].format = VK_FORMAT_R8_UINT;
|
||||
state.rts[i].format = VK_FORMAT_R8G8B8A8_UNORM;
|
||||
state.rts[i].samples = fb->samples;
|
||||
}
|
||||
state.num_rts++;
|
||||
|
@ -4321,7 +4321,7 @@ zink_context_create(struct pipe_screen *pscreen, void *priv, unsigned flags)
|
|||
if (!ctx->render_pass_cache)
|
||||
goto fail;
|
||||
|
||||
const uint8_t data[] = {0};
|
||||
const uint32_t data[] = {0};
|
||||
ctx->dummy_vertex_buffer = pipe_buffer_create(&screen->base,
|
||||
PIPE_BIND_VERTEX_BUFFER | PIPE_BIND_SHADER_IMAGE, PIPE_USAGE_IMMUTABLE, sizeof(data));
|
||||
if (!ctx->dummy_vertex_buffer)
|
||||
|
@ -4337,7 +4337,7 @@ zink_context_create(struct pipe_screen *pscreen, void *priv, unsigned flags)
|
|||
if (!ctx->dummy_surface[i])
|
||||
goto fail;
|
||||
}
|
||||
VkBufferViewCreateInfo bvci = create_bvci(ctx, zink_resource(ctx->dummy_vertex_buffer), PIPE_FORMAT_R8_UNORM, 0, sizeof(data));
|
||||
VkBufferViewCreateInfo bvci = create_bvci(ctx, zink_resource(ctx->dummy_vertex_buffer), PIPE_FORMAT_R8G8B8A8_UNORM, 0, sizeof(data));
|
||||
ctx->dummy_bufferview = get_buffer_view(ctx, zink_resource(ctx->dummy_vertex_buffer), &bvci);
|
||||
if (!ctx->dummy_bufferview)
|
||||
goto fail;
|
||||
|
|
|
@ -394,7 +394,7 @@ zink_surface_create_null(struct zink_context *ctx, enum pipe_texture_target targ
|
|||
templ.width0 = width;
|
||||
templ.height0 = height;
|
||||
templ.depth0 = 1;
|
||||
templ.format = PIPE_FORMAT_R8_UINT;
|
||||
templ.format = PIPE_FORMAT_R8G8B8A8_UNORM;
|
||||
templ.target = target;
|
||||
templ.bind = PIPE_BIND_RENDER_TARGET;
|
||||
templ.nr_samples = samples;
|
||||
|
@ -403,7 +403,7 @@ zink_surface_create_null(struct zink_context *ctx, enum pipe_texture_target targ
|
|||
if (!pres)
|
||||
return NULL;
|
||||
|
||||
surf_templ.format = PIPE_FORMAT_R8_UINT;
|
||||
surf_templ.format = PIPE_FORMAT_R8G8B8A8_UNORM;
|
||||
surf_templ.nr_samples = 0;
|
||||
struct pipe_surface *psurf = ctx->base.create_surface(&ctx->base, pres, &surf_templ);
|
||||
pipe_resource_reference(&pres, NULL);
|
||||
|
|
Loading…
Reference in New Issue