diff options
author | Ken Mays <[email protected]> | 2019-09-26 09:47:06 +0000 |
---|---|---|
committer | Juan Suárez Romero <[email protected]> | 2019-10-01 10:31:02 +0000 |
commit | 4943c89d6d3f522b3100be9187ff045f84f032b1 (patch) | |
tree | 9c572b4a77b3a0309cc829d417b55682f521c5a7 /src/gallium/targets/haiku-softpipe | |
parent | e55df4c8596893ca7258a9f199610d8528d46640 (diff) |
haiku: fix Mesa build
1. The hgl.c file is a read-only file versus read-write.
Ref: src/gallium/state_trackers/hgl/hgl.c
2. I've included the Haiku-specific patches I used to get a successful
build of Mesa 19.1.7 on Haiku using the meson/ninja build procedure.
Shows "[764/764] linking target ... libswpipe.so" at build completion.
v2:
Remove autotools files (Eric)
v3:
Update the patch
Reported-by: Ken Mays <[email protected]>
Tested-by: Ken Mays <[email protected]>
CC: [email protected]
Reviewed-by: Alexander von Gluck IV <[email protected]>
Diffstat (limited to 'src/gallium/targets/haiku-softpipe')
-rw-r--r-- | src/gallium/targets/haiku-softpipe/GalliumContext.cpp | 32 |
1 files changed, 7 insertions, 25 deletions
diff --git a/src/gallium/targets/haiku-softpipe/GalliumContext.cpp b/src/gallium/targets/haiku-softpipe/GalliumContext.cpp index 0356f65417c..d9be7904630 100644 --- a/src/gallium/targets/haiku-softpipe/GalliumContext.cpp +++ b/src/gallium/targets/haiku-softpipe/GalliumContext.cpp @@ -26,6 +26,7 @@ #include "sw/hgl/hgl_sw_winsys.h" #include "util/u_atomic.h" #include "util/u_memory.h" +#include "util/u_framebuffer.h" #include "target-helpers/inline_sw_helper.h" #include "target-helpers/inline_debug_helper.h" @@ -332,36 +333,17 @@ GalliumContext::SwapBuffers(context_id contextID) ERROR("%s: context not found\n", __func__); return B_ERROR; } - - // TODO: Where did st_notify_swapbuffers go? - //st_notify_swapbuffers(context->draw->stfbi); - context->st->flush(context->st, ST_FLUSH_FRONT, NULL); - struct st_context *stContext = (struct st_context*)context->st; - - unsigned nColorBuffers = stContext->state.framebuffer.nr_cbufs; - for (unsigned i = 0; i < nColorBuffers; i++) { - pipe_surface* surface = stContext->state.framebuffer.cbufs[i]; - if (!surface) { - ERROR("%s: Color buffer %d invalid!\n", __func__, i); - continue; - } - - TRACE("%s: Flushing color buffer #%d\n", __func__, i); - - // We pass our destination bitmap to flush_fronbuffer which passes it - // to the private winsys display call. - fScreen->flush_frontbuffer(fScreen, surface->texture, 0, 0, - context->bitmap, NULL); + struct hgl_buffer* buffer = hgl_st_framebuffer(context->draw->stfbi); + pipe_surface* surface = buffer->surface; + if (!surface) { + ERROR("%s: Invalid drawable surface!\n", __func__); + return B_ERROR; } - #if 0 - // TODO... should we flush the z stencil buffer? - pipe_surface* zSurface = stContext->state.framebuffer.zsbuf; - fScreen->flush_frontbuffer(fScreen, zSurface->texture, 0, 0, + fScreen->flush_frontbuffer(fScreen, surface->texture, 0, 0, context->bitmap, NULL); - #endif return B_OK; } |