On Tue, Nov 6, 2018 at 2:31 PM Kristian H. Kristensen <hoegsb...@gmail.com> wrote: > > 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. > > Signed-off-by: Kristian H. Kristensen <hoegsb...@chromium.org> > --- > src/gallium/include/pipe/p_defines.h | 1 + > src/gallium/include/pipe/p_state.h | 6 ++++++ > src/mesa/state_tracker/st_cb_fbo.c | 3 +++ > src/mesa/state_tracker/st_cb_fbo.h | 1 + > src/mesa/state_tracker/st_extensions.c | 1 + > 5 files changed, 12 insertions(+) > > diff --git a/src/gallium/include/pipe/p_defines.h > b/src/gallium/include/pipe/p_defines.h > index dacedf5b936..0ecfaf3ba5e 100644 > --- a/src/gallium/include/pipe/p_defines.h > +++ b/src/gallium/include/pipe/p_defines.h > @@ -823,6 +823,7 @@ enum pipe_cap > PIPE_CAP_MAX_COMBINED_HW_ATOMIC_COUNTER_BUFFERS, > PIPE_CAP_MAX_TEXTURE_UPLOAD_MEMORY_BUDGET, > PIPE_CAP_MAX_VERTEX_ELEMENT_SRC_OFFSET, > + PIPE_CAP_MULTISAMPLED_RENDER_TO_TEXTURE,
I think you forgot to "git add src/gallium/docs/source/screen.rst" Also, I don't feel strongly about a situation where there are so few st/mesa changes, but most of the time, gallium changes are done separately of st/mesa changes. > }; > > /** > diff --git a/src/gallium/include/pipe/p_state.h > b/src/gallium/include/pipe/p_state.h > index fd670345aad..89cffb15bd8 100644 > --- a/src/gallium/include/pipe/p_state.h > +++ b/src/gallium/include/pipe/p_state.h > @@ -443,6 +443,12 @@ struct pipe_surface > uint16_t width; /**< logical width in pixels */ > uint16_t height; /**< logical height in pixels */ > > + /** Number of samples for the surface. This can be different from the > + * resource nr_samples when the resource is bound using > + * FramebufferTexture2DMultisampleEXT. > + */ > + unsigned nr_samples:8; > + > union pipe_surface_desc u; > }; > > diff --git a/src/mesa/state_tracker/st_cb_fbo.c > b/src/mesa/state_tracker/st_cb_fbo.c > index 0e535257cb4..8901a8680ef 100644 > --- a/src/mesa/state_tracker/st_cb_fbo.c > +++ b/src/mesa/state_tracker/st_cb_fbo.c > @@ -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); > diff --git a/src/mesa/state_tracker/st_cb_fbo.h > b/src/mesa/state_tracker/st_cb_fbo.h > index 345c11442c6..046f01713ce 100644 > --- a/src/mesa/state_tracker/st_cb_fbo.h > +++ b/src/mesa/state_tracker/st_cb_fbo.h > @@ -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 */ > }; > > > diff --git a/src/mesa/state_tracker/st_extensions.c > b/src/mesa/state_tracker/st_extensions.c > index 16889074f66..9a1594212dd 100644 > --- a/src/mesa/state_tracker/st_extensions.c > +++ b/src/mesa/state_tracker/st_extensions.c > @@ -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_MULTISAMPLED_RENDER_TO_TEXTURE }, > { 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 }, > -- > 2.19.1.930.g4563a0d9d0-goog > > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/mesa-dev _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev