summaryrefslogtreecommitdiff
path: root/src/gallium/winsys/gdi/gdi_llvmpipe_winsys.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/gallium/winsys/gdi/gdi_llvmpipe_winsys.c')
-rw-r--r--src/gallium/winsys/gdi/gdi_llvmpipe_winsys.c157
1 files changed, 2 insertions, 155 deletions
diff --git a/src/gallium/winsys/gdi/gdi_llvmpipe_winsys.c b/src/gallium/winsys/gdi/gdi_llvmpipe_winsys.c
index a9fa03b8e5..3d317c70dd 100644
--- a/src/gallium/winsys/gdi/gdi_llvmpipe_winsys.c
+++ b/src/gallium/winsys/gdi/gdi_llvmpipe_winsys.c
@@ -36,153 +36,8 @@
#include <windows.h>
-#include "pipe/p_format.h"
-#include "pipe/p_context.h"
-#include "util/u_inlines.h"
-#include "util/u_format.h"
-#include "util/u_math.h"
-#include "util/u_memory.h"
-#include "llvmpipe/lp_winsys.h"
+#include "gdi_winsys.h"
#include "llvmpipe/lp_texture.h"
-#include "stw_winsys.h"
-
-
-struct gdi_llvmpipe_displaytarget
-{
- enum pipe_format format;
- unsigned width;
- unsigned height;
- unsigned stride;
-
- unsigned size;
-
- void *data;
-
- BITMAPINFO bmi;
-};
-
-
-/** Cast wrapper */
-static INLINE struct gdi_llvmpipe_displaytarget *
-gdi_llvmpipe_displaytarget( struct llvmpipe_displaytarget *buf )
-{
- return (struct gdi_llvmpipe_displaytarget *)buf;
-}
-
-
-static boolean
-gdi_llvmpipe_is_displaytarget_format_supported( struct llvmpipe_winsys *ws,
- enum pipe_format format )
-{
- switch(format) {
- case PIPE_FORMAT_B8G8R8X8_UNORM:
- case PIPE_FORMAT_B8G8R8A8_UNORM:
- return TRUE;
-
- /* TODO: Support other formats possible with BMPs, as described in
- * http://msdn.microsoft.com/en-us/library/dd183376(VS.85).aspx */
-
- default:
- return FALSE;
- }
-}
-
-
-static void *
-gdi_llvmpipe_displaytarget_map(struct llvmpipe_winsys *ws,
- struct llvmpipe_displaytarget *dt,
- unsigned flags )
-{
- struct gdi_llvmpipe_displaytarget *gdt = gdi_llvmpipe_displaytarget(dt);
-
- return gdt->data;
-}
-
-
-static void
-gdi_llvmpipe_displaytarget_unmap(struct llvmpipe_winsys *ws,
- struct llvmpipe_displaytarget *dt )
-{
-
-}
-
-
-static void
-gdi_llvmpipe_displaytarget_destroy(struct llvmpipe_winsys *winsys,
- struct llvmpipe_displaytarget *dt)
-{
- struct gdi_llvmpipe_displaytarget *gdt = gdi_llvmpipe_displaytarget(dt);
-
- align_free(gdt->data);
- FREE(gdt);
-}
-
-
-static struct llvmpipe_displaytarget *
-gdi_llvmpipe_displaytarget_create(struct llvmpipe_winsys *winsys,
- enum pipe_format format,
- unsigned width, unsigned height,
- unsigned alignment,
- unsigned *stride)
-{
- struct gdi_llvmpipe_displaytarget *gdt;
- unsigned cpp;
- unsigned bpp;
-
- gdt = CALLOC_STRUCT(gdi_llvmpipe_displaytarget);
- if(!gdt)
- goto no_gdt;
-
- gdt->format = format;
- gdt->width = width;
- gdt->height = height;
-
- bpp = util_format_get_blocksizebits(format);
- cpp = util_format_get_blocksize(format);
-
- gdt->stride = align(width * cpp, alignment);
- gdt->size = gdt->stride * height;
-
- gdt->data = align_malloc(gdt->size, alignment);
- if(!gdt->data)
- goto no_data;
-
- gdt->bmi.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
- gdt->bmi.bmiHeader.biWidth = gdt->stride / cpp;
- gdt->bmi.bmiHeader.biHeight= -(long)height;
- gdt->bmi.bmiHeader.biPlanes = 1;
- gdt->bmi.bmiHeader.biBitCount = bpp;
- gdt->bmi.bmiHeader.biCompression = BI_RGB;
- gdt->bmi.bmiHeader.biSizeImage = 0;
- gdt->bmi.bmiHeader.biXPelsPerMeter = 0;
- gdt->bmi.bmiHeader.biYPelsPerMeter = 0;
- gdt->bmi.bmiHeader.biClrUsed = 0;
- gdt->bmi.bmiHeader.biClrImportant = 0;
-
- *stride = gdt->stride;
- return (struct llvmpipe_displaytarget *)gdt;
-
-no_data:
- FREE(gdt);
-no_gdt:
- return NULL;
-}
-
-
-static void
-gdi_llvmpipe_displaytarget_display(struct llvmpipe_winsys *winsys,
- struct llvmpipe_displaytarget *dt,
- void *context_private)
-{
- assert(0);
-}
-
-
-static void
-gdi_llvmpipe_destroy(struct llvmpipe_winsys *winsys)
-{
- FREE(winsys);
-}
static struct pipe_screen *
@@ -191,18 +46,10 @@ gdi_llvmpipe_screen_create(void)
static struct llvmpipe_winsys *winsys;
struct pipe_screen *screen;
- winsys = CALLOC_STRUCT(llvmpipe_winsys);
+ winsys = gdi_create_sw_winsys();
if(!winsys)
goto no_winsys;
- winsys->destroy = gdi_llvmpipe_destroy;
- winsys->is_displaytarget_format_supported = gdi_llvmpipe_is_displaytarget_format_supported;
- winsys->displaytarget_create = gdi_llvmpipe_displaytarget_create;
- winsys->displaytarget_map = gdi_llvmpipe_displaytarget_map;
- winsys->displaytarget_unmap = gdi_llvmpipe_displaytarget_unmap;
- winsys->displaytarget_display = gdi_llvmpipe_displaytarget_display;
- winsys->displaytarget_destroy = gdi_llvmpipe_displaytarget_destroy;
-
screen = llvmpipe_create_screen(winsys);
if(!screen)
goto no_screen;