mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-02 20:58:04 +02:00
st/mesa: Add support for EXT_multisampled_render_to_texture
In gallium, we model the attachment sample count as a new nr_samples field in pipe_surface. A driver can indicate support for the extension using the new pipe cap, PIPE_CAP_MULTISAMPLED_RENDER_TO_TEXTURE. Reviewed-by: Eric Anholt <eric@anholt.net> Signed-off-by: Kristian H. Kristensen <hoegsberg@chromium.org>
This commit is contained in:
parent
2710c40e3c
commit
14ea811c67
3 changed files with 5 additions and 0 deletions
|
|
@ -516,6 +516,7 @@ st_update_renderbuffer_surface(struct st_context *st,
|
|||
surf->texture != resource ||
|
||||
surf->width != rtt_width ||
|
||||
surf->height != rtt_height ||
|
||||
surf->nr_samples != strb->rtt_nr_samples ||
|
||||
surf->u.tex.level != level ||
|
||||
surf->u.tex.first_layer != first_layer ||
|
||||
surf->u.tex.last_layer != last_layer) {
|
||||
|
|
@ -523,6 +524,7 @@ st_update_renderbuffer_surface(struct st_context *st,
|
|||
struct pipe_surface surf_tmpl;
|
||||
memset(&surf_tmpl, 0, sizeof(surf_tmpl));
|
||||
surf_tmpl.format = format;
|
||||
surf_tmpl.nr_samples = strb->rtt_nr_samples;
|
||||
surf_tmpl.u.tex.level = level;
|
||||
surf_tmpl.u.tex.first_layer = first_layer;
|
||||
surf_tmpl.u.tex.last_layer = last_layer;
|
||||
|
|
@ -572,6 +574,7 @@ st_render_texture(struct gl_context *ctx,
|
|||
strb->rtt_face = att->CubeMapFace;
|
||||
strb->rtt_slice = att->Zoffset;
|
||||
strb->rtt_layered = att->Layered;
|
||||
strb->rtt_nr_samples = att->NumSamples;
|
||||
pipe_resource_reference(&strb->texture, pt);
|
||||
|
||||
st_update_renderbuffer_surface(st, strb);
|
||||
|
|
|
|||
|
|
@ -69,6 +69,7 @@ struct st_renderbuffer
|
|||
boolean is_rtt; /**< whether Driver.RenderTexture was called */
|
||||
unsigned rtt_face, rtt_slice;
|
||||
boolean rtt_layered; /**< whether glFramebufferTexture was called */
|
||||
unsigned rtt_nr_samples; /**< from FramebufferTexture2DMultisampleEXT */
|
||||
};
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -740,6 +740,7 @@ void st_init_extensions(struct pipe_screen *screen,
|
|||
{ o(EXT_draw_buffers2), PIPE_CAP_INDEP_BLEND_ENABLE },
|
||||
{ o(EXT_memory_object), PIPE_CAP_MEMOBJ },
|
||||
{ o(EXT_memory_object_fd), PIPE_CAP_MEMOBJ },
|
||||
{ o(EXT_multisampled_render_to_texture), PIPE_CAP_SURFACE_SAMPLE_COUNT },
|
||||
{ o(EXT_semaphore), PIPE_CAP_FENCE_SIGNAL },
|
||||
{ o(EXT_semaphore_fd), PIPE_CAP_FENCE_SIGNAL },
|
||||
{ o(EXT_texture_array), PIPE_CAP_MAX_TEXTURE_ARRAY_LAYERS },
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue