On 01/17/2017 06:44 AM, Boyan Ding wrote:
st will only add back buffer attachment to window framebuffer when
visual is in double-buffer mode. However, some applications may
render to front buffer even if they have chosen a double-buffer visual.
In this case, no color buffer will be attached when rendering. i965
handles this case correctly, in which it adds both front and back buffer
attachments. Do the same thing in st.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=99116
Signed-off-by: Boyan Ding <boyan.j.d...@gmail.com>
---
  src/mesa/state_tracker/st_manager.c | 6 +++---
  1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/mesa/state_tracker/st_manager.c 
b/src/mesa/state_tracker/st_manager.c
index c3d8286b5a..aa53edfecb 100644
--- a/src/mesa/state_tracker/st_manager.c
+++ b/src/mesa/state_tracker/st_manager.c
@@ -417,7 +417,6 @@ st_framebuffer_create(struct st_context *st,
  {
     struct st_framebuffer *stfb;
     struct gl_config mode;
-   gl_buffer_index idx;

     if (!stfbi)
        return NULL;
@@ -466,11 +465,12 @@ st_framebuffer_create(struct st_context *st,
     stfb->iface_stamp = p_atomic_read(&stfbi->stamp) - 1;

     /* add the color buffer */
-   idx = stfb->Base._ColorDrawBufferIndexes[0];
-   if (!st_framebuffer_add_renderbuffer(stfb, idx)) {
+   if (!st_framebuffer_add_renderbuffer(stfb, BUFFER_FRONT_LEFT)) {
        free(stfb);
        return NULL;
     }
+   if (mode.doubleBufferMode)
+      st_framebuffer_add_renderbuffer(stfb, BUFFER_BACK_LEFT);

     st_framebuffer_add_renderbuffer(stfb, BUFFER_DEPTH);
     st_framebuffer_add_renderbuffer(stfb, BUFFER_ACCUM);



I believe we have code in the state tracker to allocate the front buffer on demand when the app actually tries to draw to it. Can you look into that?

-Brian

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to