aboutsummaryrefslogtreecommitdiffstats
path: root/src/gallium/targets/haiku-softpipe
diff options
context:
space:
mode:
authorKen Mays <[email protected]>2019-09-26 09:47:06 +0000
committerJuan Suárez Romero <[email protected]>2019-10-01 10:31:02 +0000
commit4943c89d6d3f522b3100be9187ff045f84f032b1 (patch)
tree9c572b4a77b3a0309cc829d417b55682f521c5a7 /src/gallium/targets/haiku-softpipe
parente55df4c8596893ca7258a9f199610d8528d46640 (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.cpp32
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;
}