summaryrefslogtreecommitdiff
path: root/src/gallium/winsys/drm/vmware
diff options
context:
space:
mode:
authorJakob Bornecrantz <jakob@vmware.com>2010-03-24 11:45:30 +0100
committerJakob Bornecrantz <jakob@vmware.com>2010-03-24 17:02:17 +0100
commit43218a45a4cdbe2bc92867dc143f4b0e5fe9ca8d (patch)
tree609015cdb06bc8166fb51d8b869ffae286b0a977 /src/gallium/winsys/drm/vmware
parentf5ba2cdeb902993b993187a958aad89c5ac79d6b (diff)
gallium: Move xorg drivers to targets
Attached output from git commit: rename src/gallium/{winsys/drm/intel/xorg => targets/xorg-i915}/Makefile (95%) rename src/gallium/{winsys/drm/intel/xorg => targets/xorg-i915}/intel_xorg.c (98%) rename src/gallium/{winsys/drm/i965/xorg => targets/xorg-i965}/Makefile (78%) rename src/gallium/{winsys/drm/i965/xorg => targets/xorg-i965}/intel_xorg.c (98%) rename src/gallium/{winsys/drm/nouveau/xorg => targets/xorg-nouveau}/Makefile (96%) rename src/gallium/{winsys/drm/nouveau/xorg => targets/xorg-nouveau}/nouveau_xorg.c (98%) rename src/gallium/{winsys/drm/radeon/xorg => targets/xorg-radeon}/Makefile (73%) rename src/gallium/{winsys/drm/radeon/xorg => targets/xorg-radeon}/radeon_xorg.c (98%) rename src/gallium/{winsys/drm/vmware/xorg => targets/xorg-vmwgfx}/Makefile (97%) rename src/gallium/{winsys/drm/vmware/xorg => targets/xorg-vmwgfx}/SConscript (100%) rename src/gallium/{winsys/drm/vmware/xorg => targets/xorg-vmwgfx}/vmw_driver.h (100%) rename src/gallium/{winsys/drm/vmware/xorg => targets/xorg-vmwgfx}/vmw_hook.h (100%) rename src/gallium/{winsys/drm/vmware/xorg => targets/xorg-vmwgfx}/vmw_ioctl.c (99%) rename src/gallium/{winsys/drm/vmware/xorg => targets/xorg-vmwgfx}/vmw_screen.c (100%) rename src/gallium/{winsys/drm/vmware/xorg => targets/xorg-vmwgfx}/vmw_video.c (99%) rename src/gallium/{winsys/drm/vmware/xorg => targets/xorg-vmwgfx}/vmw_xorg.c (100%)
Diffstat (limited to 'src/gallium/winsys/drm/vmware')
-rw-r--r--src/gallium/winsys/drm/vmware/SConscript4
-rw-r--r--src/gallium/winsys/drm/vmware/xorg/Makefile71
-rw-r--r--src/gallium/winsys/drm/vmware/xorg/SConscript57
-rw-r--r--src/gallium/winsys/drm/vmware/xorg/vmw_driver.h103
-rw-r--r--src/gallium/winsys/drm/vmware/xorg/vmw_hook.h39
-rw-r--r--src/gallium/winsys/drm/vmware/xorg/vmw_ioctl.c242
-rw-r--r--src/gallium/winsys/drm/vmware/xorg/vmw_screen.c178
-rw-r--r--src/gallium/winsys/drm/vmware/xorg/vmw_video.c1072
-rw-r--r--src/gallium/winsys/drm/vmware/xorg/vmw_xorg.c191
9 files changed, 0 insertions, 1957 deletions
diff --git a/src/gallium/winsys/drm/vmware/SConscript b/src/gallium/winsys/drm/vmware/SConscript
index e4da31a693..eff87e7d01 100644
--- a/src/gallium/winsys/drm/vmware/SConscript
+++ b/src/gallium/winsys/drm/vmware/SConscript
@@ -1,7 +1,3 @@
Import('*')
SConscript(['core/SConscript',])
-
-if 'xorg' in env['statetrackers']:
-
- SConscript(['xorg/SConscript'])
diff --git a/src/gallium/winsys/drm/vmware/xorg/Makefile b/src/gallium/winsys/drm/vmware/xorg/Makefile
deleted file mode 100644
index 49e28ae17f..0000000000
--- a/src/gallium/winsys/drm/vmware/xorg/Makefile
+++ /dev/null
@@ -1,71 +0,0 @@
-TOP = ../../../../../..
-
-include $(TOP)/configs/current
-
-TARGET = vmwgfx_drv.so
-
-CFILES = \
- vmw_xorg.c \
- vmw_video.c \
- vmw_ioctl.c \
- vmw_screen.c
-
-OBJECTS = $(patsubst %.c,%.o,$(CFILES))
-
-INCLUDES = \
- $(shell pkg-config --cflags-only-I pixman-1 xorg-server libdrm xproto) \
- -I$(TOP)/src/gallium/include \
- -I$(TOP)/src/gallium/drivers \
- -I$(TOP)/src/gallium/auxiliary \
- -I$(TOP)/src/gallium
-
-LIBS = \
- $(TOP)/src/gallium/state_trackers/xorg/libxorgtracker.a \
- $(TOP)/src/gallium/winsys/drm/vmware/core/libsvgadrm.a \
- $(TOP)/src/gallium/drivers/trace/libtrace.a \
- $(TOP)/src/gallium/drivers/svga/libsvga.a \
- $(GALLIUM_AUXILIARIES)
-
-LINKS = \
- $(shell pkg-config --libs --silence-errors libkms) \
- $(shell pkg-config --libs libdrm)
-
-DRIVER_DEFINES = \
- -std=gnu99 \
- -DHAVE_CONFIG_H
-
-TARGET_STAGING = $(TOP)/$(LIB_DIR)/gallium/$(TARGET)
-
-#############################################
-
-
-
-all default: $(TARGET) $(TARGET_STAGING)
-
-$(TARGET): $(OBJECTS) Makefile $(LIBS)
- $(MKLIB) -noprefix -o $@ $(OBJECTS) $(LIBS) $(LINKS)
-
-$(TOP)/$(LIB_DIR)/gallium:
- mkdir -p $@
-
-$(TARGET_STAGING): $(TARGET) $(TOP)/$(LIB_DIR)/gallium
- $(INSTALL) $(TARGET) $(TOP)/$(LIB_DIR)/gallium
-
-clean:
- rm -rf $(OBJECTS) $(TARGET)
-
-install:
- $(INSTALL) -d $(DESTDIR)/$(XORG_DRIVER_INSTALL_DIR)
- $(MINSTALL) -m 755 $(TARGET) $(DESTDIR)/$(XORG_DRIVER_INSTALL_DIR)
-
-
-##############################################
-
-
-.c.o:
- $(CC) -c $(CFLAGS) $(INCLUDES) $(DRIVER_DEFINES) $< -o $@
-
-
-##############################################
-
-.PHONY = all clean install
diff --git a/src/gallium/winsys/drm/vmware/xorg/SConscript b/src/gallium/winsys/drm/vmware/xorg/SConscript
deleted file mode 100644
index 1e5d8ff7fe..0000000000
--- a/src/gallium/winsys/drm/vmware/xorg/SConscript
+++ /dev/null
@@ -1,57 +0,0 @@
-import os.path
-
-Import('*')
-
-if env['platform'] == 'linux':
-
- env = env.Clone()
-
- env.ParseConfig('pkg-config --cflags --libs libdrm xorg-server')
-
- env.Prepend(CPPPATH = [
- '#/include',
- '#/src/gallium',
- '#/src/mesa',
- '#/src/gallium/drivers/svga',
- '#/src/gallium/drivers/svga/include',
- ])
-
- env.Append(CPPDEFINES = [
- ])
-
- if env['gcc']:
- env.Append(CPPDEFINES = [
- 'HAVE_STDINT_H',
- 'HAVE_SYS_TYPES_H',
- ])
-
- env.Append(CFLAGS = [
- '-std=gnu99',
- '-D_FILE_OFFSET_BITS=64',
- ])
-
- env.Prepend(LIBPATH = [
- ])
-
- env.Prepend(LIBS = [
- trace,
- st_xorg,
- svgadrm,
- svga,
- gallium,
- ])
-
- sources = [
- 'vmw_ioctl.c',
- 'vmw_screen.c',
- 'vmw_video.c',
- 'vmw_xorg.c',
- ]
-
- # TODO: write a wrapper function http://www.scons.org/wiki/WrapperFunctions
- env.LoadableModule(
- target ='vmwgfx_drv.so',
- source = sources,
- LIBS = env['LIBS'],
- SHLIBPREFIX = '',
- )
diff --git a/src/gallium/winsys/drm/vmware/xorg/vmw_driver.h b/src/gallium/winsys/drm/vmware/xorg/vmw_driver.h
deleted file mode 100644
index ba754b51e4..0000000000
--- a/src/gallium/winsys/drm/vmware/xorg/vmw_driver.h
+++ /dev/null
@@ -1,103 +0,0 @@
-/**********************************************************
- * Copyright 2009 VMware, Inc. All rights reserved.
- *
- * Permission is hereby granted, free of charge, to any person
- * obtaining a copy of this software and associated documentation
- * files (the "Software"), to deal in the Software without
- * restriction, including without limitation the rights to use, copy,
- * modify, merge, publish, distribute, sublicense, and/or sell copies
- * of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be
- * included in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- **********************************************************/
-
-/**
- * @file
- * Contains the shared resources for VMware Xorg driver
- * that sits ontop of the Xorg State Traker.
- *
- * It is initialized in vmw_screen.c.
- *
- * @author Jakob Bornecrantz <jakob@vmware.com>
- */
-
-#ifndef VMW_DRIVER_H_
-#define VMW_DRIVER_H_
-
-#include "state_trackers/xorg/xorg_tracker.h"
-
-struct vmw_dma_buffer;
-
-struct vmw_customizer
-{
- CustomizerRec base;
- ScrnInfoPtr pScrn;
-
- int fd;
-
- void *cursor_priv;
-
- /* vmw_video.c */
- void *video_priv;
-};
-
-static INLINE struct vmw_customizer *
-vmw_customizer(CustomizerPtr cust)
-{
- return cust ? (struct vmw_customizer *) cust : NULL;
-}
-
-
-/***********************************************************************
- * vmw_video.c
- */
-
-Bool vmw_video_init(struct vmw_customizer *vmw);
-
-Bool vmw_video_close(struct vmw_customizer *vmw);
-
-void vmw_video_stop_all(struct vmw_customizer *vmw);
-
-
-/***********************************************************************
- * vmw_ioctl.c
- */
-
-int vmw_ioctl_cursor_bypass(struct vmw_customizer *vmw, int xhot, int yhot);
-
-struct vmw_dma_buffer * vmw_ioctl_buffer_create(struct vmw_customizer *vmw,
- uint32_t size,
- unsigned *handle);
-
-void * vmw_ioctl_buffer_map(struct vmw_customizer *vmw,
- struct vmw_dma_buffer *buf);
-
-void vmw_ioctl_buffer_unmap(struct vmw_customizer *vmw,
- struct vmw_dma_buffer *buf);
-
-void vmw_ioctl_buffer_destroy(struct vmw_customizer *vmw,
- struct vmw_dma_buffer *buf);
-
-int vmw_ioctl_supports_streams(struct vmw_customizer *vmw);
-
-int vmw_ioctl_num_streams(struct vmw_customizer *vmw,
- uint32_t *ntot, uint32_t *nfree);
-
-int vmw_ioctl_unref_stream(struct vmw_customizer *vmw, uint32_t stream_id);
-
-int vmw_ioctl_claim_stream(struct vmw_customizer *vmw, uint32_t *out);
-
-
-#endif
diff --git a/src/gallium/winsys/drm/vmware/xorg/vmw_hook.h b/src/gallium/winsys/drm/vmware/xorg/vmw_hook.h
deleted file mode 100644
index 224a2d9299..0000000000
--- a/src/gallium/winsys/drm/vmware/xorg/vmw_hook.h
+++ /dev/null
@@ -1,39 +0,0 @@
-/**********************************************************
- * Copyright 2009 VMware, Inc. All rights reserved.
- *
- * Permission is hereby granted, free of charge, to any person
- * obtaining a copy of this software and associated documentation
- * files (the "Software"), to deal in the Software without
- * restriction, including without limitation the rights to use, copy,
- * modify, merge, publish, distribute, sublicense, and/or sell copies
- * of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be
- * included in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- **********************************************************/
-
-#ifndef VMW_HOOK_H_
-#define VMW_HOOK_H_
-
-#include "state_trackers/xorg/xorg_winsys.h"
-
-
-/***********************************************************************
- * vmw_screen.c
- */
-
-void vmw_screen_set_functions(ScrnInfoPtr pScrn);
-
-
-#endif
diff --git a/src/gallium/winsys/drm/vmware/xorg/vmw_ioctl.c b/src/gallium/winsys/drm/vmware/xorg/vmw_ioctl.c
deleted file mode 100644
index 521578ab35..0000000000
--- a/src/gallium/winsys/drm/vmware/xorg/vmw_ioctl.c
+++ /dev/null
@@ -1,242 +0,0 @@
-/**********************************************************
- * Copyright 2009 VMware, Inc. All rights reserved.
- *
- * Permission is hereby granted, free of charge, to any person
- * obtaining a copy of this software and associated documentation
- * files (the "Software"), to deal in the Software without
- * restriction, including without limitation the rights to use, copy,
- * modify, merge, publish, distribute, sublicense, and/or sell copies
- * of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be
- * included in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- **********************************************************/
-
-/**
- * @file
- * Contains the functions for creating dma buffers by calling
- * the kernel via driver specific ioctls.
- *
- * @author Jakob Bornecrantz <jakob@vmware.com>
- */
-
-#ifndef HAVE_STDINT_H
-#define HAVE_STDINT_H 1
-#endif
-#define _FILE_OFFSET_BITS 64
-
-#include <errno.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include <sys/mman.h>
-#include "xf86drm.h"
-#include "../core/vmwgfx_drm.h"
-
-#include "vmw_driver.h"
-#include "util/u_debug.h"
-
-struct vmw_dma_buffer
-{
- void *data;
- unsigned handle;
- uint64_t map_handle;
- unsigned map_count;
- uint32_t size;
-};
-
-static int
-vmw_ioctl_get_param(struct vmw_customizer *vmw, uint32_t param, uint64_t *out)
-{
- struct drm_vmw_getparam_arg gp_arg;
- int ret;
-
- memset(&gp_arg, 0, sizeof(gp_arg));
- gp_arg.param = param;
- ret = drmCommandWriteRead(vmw->fd, DRM_VMW_GET_PARAM,
- &gp_arg, sizeof(gp_arg));
-
- if (ret == 0) {
- *out = gp_arg.value;
- }
-
- return ret;
-}
-
-int
-vmw_ioctl_supports_streams(struct vmw_customizer *vmw)
-{
- uint64_t value;
- int ret;
-
- ret = vmw_ioctl_get_param(vmw, DRM_VMW_PARAM_NUM_STREAMS, &value);
- if (ret)
- return ret;
-
- return value ? 0 : -ENOSYS;
-}
-
-int
-vmw_ioctl_num_streams(struct vmw_customizer *vmw,
- uint32_t *ntot, uint32_t *nfree)
-{
- uint64_t v1, v2;
- int ret;
-
- ret = vmw_ioctl_get_param(vmw, DRM_VMW_PARAM_NUM_STREAMS, &v1);
- if (ret)
- return ret;
-
- ret = vmw_ioctl_get_param(vmw, DRM_VMW_PARAM_NUM_FREE_STREAMS, &v2);
- if (ret)
- return ret;
-
- *ntot = (uint32_t)v1;
- *nfree = (uint32_t)v2;
-
- return 0;
-}
-
-int
-vmw_ioctl_claim_stream(struct vmw_customizer *vmw, uint32_t *out)
-{
- struct drm_vmw_stream_arg s_arg;
- int ret;
-
- ret = drmCommandRead(vmw->fd, DRM_VMW_CLAIM_STREAM,
- &s_arg, sizeof(s_arg));
-
- if (ret)
- return -1;
-
- *out = s_arg.stream_id;
- return 0;
-}
-
-int
-vmw_ioctl_unref_stream(struct vmw_customizer *vmw, uint32_t stream_id)
-{
- struct drm_vmw_stream_arg s_arg;
- int ret;
-
- memset(&s_arg, 0, sizeof(s_arg));
- s_arg.stream_id = stream_id;
-
- ret = drmCommandRead(vmw->fd, DRM_VMW_CLAIM_STREAM,
- &s_arg, sizeof(s_arg));
-
- return 0;
-}
-
-int
-vmw_ioctl_cursor_bypass(struct vmw_customizer *vmw, int xhot, int yhot)
-{
- struct drm_vmw_cursor_bypass_arg arg;
- int ret;
-
- memset(&arg, 0, sizeof(arg));
- arg.flags = DRM_VMW_CURSOR_BYPASS_ALL;
- arg.xhot = xhot;
- arg.yhot = yhot;
-
- ret = drmCommandWrite(vmw->fd, DRM_VMW_CURSOR_BYPASS,
- &arg, sizeof(arg));
-
- return ret;
-}
-
-struct vmw_dma_buffer *
-vmw_ioctl_buffer_create(struct vmw_customizer *vmw, uint32_t size, unsigned *handle)
-{
- struct vmw_dma_buffer *buf;
- union drm_vmw_alloc_dmabuf_arg arg;
- struct drm_vmw_alloc_dmabuf_req *req = &arg.req;
- struct drm_vmw_dmabuf_rep *rep = &arg.rep;
- int ret;
-
- buf = xcalloc(1, sizeof(*buf));
- if (!buf)
- goto err;
-
- memset(&arg, 0, sizeof(arg));
- req->size = size;
- do {
- ret = drmCommandWriteRead(vmw->fd, DRM_VMW_ALLOC_DMABUF, &arg, sizeof(arg));
- } while (ret == -ERESTART);
-
- if (ret) {
- debug_printf("IOCTL failed %d: %s\n", ret, strerror(-ret));
- goto err_free;
- }
-
-
- buf->data = NULL;
- buf->handle = rep->handle;
- buf->map_handle = rep->map_handle;
- buf->map_count = 0;
- buf->size = size;
-
- *handle = rep->handle;
-
- return buf;
-
-err_free:
- xfree(buf);
-err:
- return NULL;
-}
-
-void
-vmw_ioctl_buffer_destroy(struct vmw_customizer *vmw, struct vmw_dma_buffer *buf)
-{
- struct drm_vmw_unref_dmabuf_arg arg;
-
- if (buf->data) {
- munmap(buf->data, buf->size);
- buf->data = NULL;
- }
-
- memset(&arg, 0, sizeof(arg));
- arg.handle = buf->handle;
- drmCommandWrite(vmw->fd, DRM_VMW_UNREF_DMABUF, &arg, sizeof(arg));
-
- xfree(buf);
-}
-
-void *
-vmw_ioctl_buffer_map(struct vmw_customizer *vmw, struct vmw_dma_buffer *buf)
-{
- void *map;
-
- if (buf->data == NULL) {
- map = mmap(NULL, buf->size, PROT_READ | PROT_WRITE, MAP_SHARED,
- vmw->fd, buf->map_handle);
- if (map == MAP_FAILED) {
- debug_printf("%s: Map failed.\n", __FUNCTION__);
- return NULL;
- }
-
- buf->data = map;
- }
-
- ++buf->map_count;
-
- return buf->data;
-}
-
-void
-vmw_ioctl_buffer_unmap(struct vmw_customizer *vmw, struct vmw_dma_buffer *buf)
-{
- --buf->map_count;
-}
diff --git a/src/gallium/winsys/drm/vmware/xorg/vmw_screen.c b/src/gallium/winsys/drm/vmware/xorg/vmw_screen.c
deleted file mode 100644
index f43f91e5c0..0000000000
--- a/src/gallium/winsys/drm/vmware/xorg/vmw_screen.c
+++ /dev/null
@@ -1,178 +0,0 @@
-/**********************************************************
- * Copyright 2009 VMware, Inc. All rights reserved.
- *
- * Permission is hereby granted, free of charge, to any person
- * obtaining a copy of this software and associated documentation
- * files (the "Software"), to deal in the Software without
- * restriction, including without limitation the rights to use, copy,
- * modify, merge, publish, distribute, sublicense, and/or sell copies
- * of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be
- * included in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- **********************************************************/
-
-/**
- * @file
- * Contains the init code for the VMware Xorg driver.
- *
- * @author Jakob Bornecrantz <jakob@vmware.com>
- */
-
-#include "vmw_hook.h"
-#include "vmw_driver.h"
-
-#include "cursorstr.h"
-
-/* modified version of crtc functions */
-xf86CrtcFuncsRec vmw_screen_crtc_funcs;
-
-static void
-vmw_screen_cursor_load_argb(xf86CrtcPtr crtc, CARD32 *image)
-{
- struct vmw_customizer *vmw =
- vmw_customizer(xorg_customizer(crtc->scrn));
- xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(crtc->scrn);
- xf86CrtcFuncsPtr funcs = vmw->cursor_priv;
- CursorPtr c = config->cursor;
-
- /* Run the ioctl before uploading the image */
- vmw_ioctl_cursor_bypass(vmw, c->bits->xhot, c->bits->yhot);
-
- funcs->load_cursor_argb(crtc, image);
-}
-
-static void
-vmw_screen_cursor_init(struct vmw_customizer *vmw)
-{
- ScrnInfoPtr pScrn = vmw->pScrn;
- xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(pScrn);
- int i;
-
- /* XXX assume that all crtc's have the same function struct */
-
- /* Save old struct need to call the old functions as well */
- vmw->cursor_priv = (void*)(config->crtc[0]->funcs);
- memcpy(&vmw_screen_crtc_funcs, vmw->cursor_priv, sizeof(xf86CrtcFuncsRec));
- vmw_screen_crtc_funcs.load_cursor_argb = vmw_screen_cursor_load_argb;
-
- for (i = 0; i < config->num_crtc; i++)
- config->crtc[i]->funcs = &vmw_screen_crtc_funcs;
-}
-
-static void
-vmw_screen_cursor_close(struct vmw_customizer *vmw)
-{
- xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(vmw->pScrn);
- int i;
-
- vmw_ioctl_cursor_bypass(vmw, 0, 0);
-
- for (i = 0; i < config->num_crtc; i++)
- config->crtc[i]->funcs = vmw->cursor_priv;
-}
-
-static Bool
-vmw_screen_init(CustomizerPtr cust, int fd)
-{
- struct vmw_customizer *vmw = vmw_customizer(cust);
-
- vmw->fd = fd;
- vmw_screen_cursor_init(vmw);
-
- /* if gallium is used then we don't need to do anything more. */
- if (xorg_has_gallium(vmw->pScrn))
- return TRUE;
-
- vmw_video_init(vmw);
-
- return TRUE;
-}
-
-static Bool
-vmw_screen_close(CustomizerPtr cust)
-{
- struct vmw_customizer *vmw = vmw_customizer(cust);
-
- if (!vmw)
- return TRUE;
-
- vmw_screen_cursor_close(vmw);
-
- vmw_video_close(vmw);
-
- return TRUE;
-}
-
-static Bool
-vmw_screen_enter_vt(CustomizerPtr cust)
-{
- debug_printf("%s: enter\n", __func__);
-
- return TRUE;
-}
-
-static Bool
-vmw_screen_leave_vt(CustomizerPtr cust)
-{
- struct vmw_customizer *vmw = vmw_customizer(cust);
-
- debug_printf("%s: enter\n", __func__);
-
- vmw_video_stop_all(vmw);
-
- return TRUE;
-}
-
-/*
- * Functions for setting up hooks into the xorg state tracker
- */
-
-static Bool (*vmw_screen_pre_init_saved)(ScrnInfoPtr pScrn, int flags) = NULL;
-
-static Bool
-vmw_screen_pre_init(ScrnInfoPtr pScrn, int flags)
-{
- struct vmw_customizer *vmw;
- CustomizerPtr cust;
-
- vmw = xnfcalloc(1, sizeof(*vmw));
- if (!vmw)
- return FALSE;
-
- cust = &vmw->base;
-
- cust->winsys_screen_init = vmw_screen_init;
- cust->winsys_screen_close = vmw_screen_close;
- cust->winsys_enter_vt = vmw_screen_enter_vt;
- cust->winsys_leave_vt = vmw_screen_leave_vt;
- vmw->pScrn = pScrn;
-
- pScrn->driverPrivate = cust;
-
- pScrn->PreInit = vmw_screen_pre_init_saved;
- if (!pScrn->PreInit(pScrn, flags))
- return FALSE;
-
- return TRUE;
-}
-
-void
-vmw_screen_set_functions(ScrnInfoPtr pScrn)
-{
- assert(!vmw_screen_pre_init_saved);
-
- vmw_screen_pre_init_saved = pScrn->PreInit;
- pScrn->PreInit = vmw_screen_pre_init;
-}
diff --git a/src/gallium/winsys/drm/vmware/xorg/vmw_video.c b/src/gallium/winsys/drm/vmware/xorg/vmw_video.c
deleted file mode 100644
index de28f06a47..0000000000
--- a/src/gallium/winsys/drm/vmware/xorg/vmw_video.c
+++ /dev/null
@@ -1,1072 +0,0 @@
-/*
- * Copyright 2007 by VMware, Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
- * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
- * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- * OTHER DEALINGS IN THE SOFTWARE.
- *
- * Except as contained in this notice, the name of the copyright holder(s)
- * and author(s) shall not be used in advertising or otherwise to promote
- * the sale, use or other dealings in this Software without prior written
- * authorization from the copyright holder(s) and author(s).
- */
-
-/*
- * vmwarevideo.c --
- *
- * Xv extension support.
- * See http://www.xfree86.org/current/DESIGN16.html
- *
- */
-
-
-#include "xf86xv.h"
-#include "fourcc.h"
-
-#include "pipe/p_compiler.h"
-/*
- * We can't incude svga_types.h due to conflicting types for Bool.
- */
-typedef int64_t int64;
-typedef uint64_t uint64;
-
-typedef int32_t int32;
-typedef uint32_t uint32;
-
-typedef int16_t int16;
-typedef uint16_t uint16;
-
-typedef int8_t int8;
-typedef uint8_t uint8;
-
-#include "svga/include/svga_reg.h"
-#include "svga/include/svga_escape.h"
-#include "svga/include/svga_overlay.h"
-
-#include "vmw_driver.h"
-
-#include <X11/extensions/Xv.h>
-
-#include "xf86drm.h"
-#include "../core/vmwgfx_drm.h"
-
-#define MAKE_ATOM(a) MakeAtom(a, sizeof(a) - 1, TRUE)
-
-/*
- * Number of videos that can be played simultaneously
- */
-#define VMWARE_VID_NUM_PORTS 1
-
-/*
- * Using a dark shade as the default colorKey
- */
-#define VMWARE_VIDEO_COLORKEY 0x100701
-
-/*
- * Maximum dimensions
- */
-#define VMWARE_VID_MAX_WIDTH 2048
-#define VMWARE_VID_MAX_HEIGHT 2048
-
-#define VMWARE_VID_NUM_ENCODINGS 1
-static XF86VideoEncodingRec vmwareVideoEncodings[] =
-{
- {
- 0,
- "XV_IMAGE",
- VMWARE_VID_MAX_WIDTH, VMWARE_VID_MAX_HEIGHT,
- {1, 1}
- }
-};
-
-#define VMWARE_VID_NUM_FORMATS 2
-static XF86VideoFormatRec vmwareVideoFormats[] =
-{
- { 16, TrueColor},
- { 24, TrueColor}
-};
-
-#define VMWARE_VID_NUM_IMAGES 3
-static XF86ImageRec vmwareVideoImages[] =
-{
- XVIMAGE_YV12,
- XVIMAGE_YUY2,
- XVIMAGE_UYVY
-};
-
-#define VMWARE_VID_NUM_ATTRIBUTES 2
-static XF86AttributeRec vmwareVideoAttributes[] =
-{
- {
- XvGettable | XvSettable,
- 0x000000,
- 0xffffff,
- "XV_COLORKEY"
- },
- {
- XvGettable | XvSettable,
- 0,
- 1,
- "XV_AUTOPAINT_COLORKEY"
- }
-};
-
-/*
- * Video frames are stored in a circular list of buffers.
- * Must be power or two, See vmw_video_port_play.
- */
-#define VMWARE_VID_NUM_BUFFERS 1
-
-/*
- * Defines the structure used to hold and pass video data to the host
- */
-struct vmw_video_buffer
-{
- unsigned handle;
- int size;
- void *data;
- void *extra_data;
- struct vmw_dma_buffer *buf;
-};
-
-
-/**
- * Structure representing a single video stream, aka port.
- *
- * Ports maps one to one to a SVGA stream. Port is just
- * what Xv calls a SVGA stream.
- */
-struct vmw_video_port
-{
- /*
- * Function prototype same as XvPutImage.
- *
- * This is either set to vmw_video_port_init or vmw_video_port_play.
- * At init this function is set to port_init. In port_init we set it
- * to port_play and call it, after initializing the struct.
- */
- int (*play)(ScrnInfoPtr, struct vmw_video_port *,
- short, short, short, short, short,
- short, short, short, int, unsigned char*,
- short, short, RegionPtr);
-
- /* values to go into the SVGAOverlayUnit */
- uint32 streamId;
- uint32 colorKey;
- uint32 flags;
-
- /* round robin of buffers */
- unsigned currBuf;
- struct vmw_video_buffer bufs[VMWARE_VID_NUM_BUFFERS];
-
- /* properties that applies to all buffers */
- int size;
- int pitches[3];
- int offsets[3];
-
- /* things for X */
- RegionRec clipBoxes;
- Bool isAutoPaintColorkey;
-};
-
-
-/**
- * Structure holding all the infromation for video.
- */
-struct vmw_video_private
-{
- int fd;
-
- /** ports */
- struct vmw_video_port port[VMWARE_VID_NUM_PORTS];
-
- /** Used to store port pointers pointers */
- DevUnion port_ptr[VMWARE_VID_NUM_PORTS];
-};
-
-
-/*
- * Callback functions exported to Xv, prefixed with vmw_xv_*.
- */
-static int vmw_xv_put_image(ScrnInfoPtr pScrn, short src_x, short src_y,
- short drw_x, short drw_y, short src_w, short src_h,
- short drw_w, short drw_h, int image,
- unsigned char *buf, short width, short height,
- Bool sync, RegionPtr clipBoxes, pointer data,
- DrawablePtr dst);
-static void vmw_xv_stop_video(ScrnInfoPtr pScrn, pointer data, Bool Cleanup);
-static int vmw_xv_query_image_attributes(ScrnInfoPtr pScrn, int format,
- unsigned short *width,
- unsigned short *height, int *pitches,
- int *offsets);
-static int vmw_xv_set_port_attribute(ScrnInfoPtr pScrn, Atom attribute,
- INT32 value, pointer data);
-static int vmw_xv_get_port_attribute(ScrnInfoPtr pScrn, Atom attribute,
- INT32 *value, pointer data);
-static void vmw_xv_query_best_size(ScrnInfoPtr pScrn, Bool motion,
- short vid_w, short vid_h, short drw_w,
- short drw_h, unsigned int *p_w,
- unsigned int *p_h, pointer data);
-
-
-/*
- * Local functions.
- */
-static XF86VideoAdaptorPtr vmw_video_init_adaptor(ScrnInfoPtr pScrn, struct vmw_customizer *vmw);
-
-static int vmw_video_port_init(ScrnInfoPtr pScrn,
- struct vmw_video_port *port,
- short src_x, short src_y, short drw_x,
- short drw_y, short src_w, short src_h,
- short drw_w, short drw_h, int format,
- unsigned char *buf, short width,
- short height, RegionPtr clipBoxes);
-static int vmw_video_port_play(ScrnInfoPtr pScrn, struct vmw_video_port *port,
- short src_x, short src_y, short drw_x,
- short drw_y, short src_w, short src_h,
- short drw_w, short drw_h, int format,
- unsigned char *buf, short width,
- short height, RegionPtr clipBoxes);
-static void vmw_video_port_cleanup(ScrnInfoPtr pScrn, struct vmw_video_port *port);
-
-static int vmw_video_buffer_alloc(struct vmw_customizer *vmw, int size,
- struct vmw_video_buffer *out);
-static int vmw_video_buffer_free(struct vmw_customizer *vmw,
- struct vmw_video_buffer *out);
-
-
-/*
- *-----------------------------------------------------------------------------
- *
- * vmw_video_init --
- *
- * Initializes Xv support.
- *
- * Results:
- * TRUE on success, FALSE on error.
- *
- * Side effects:
- * Xv support is initialized. Memory is allocated for all supported
- * video streams.
- *
- *-----------------------------------------------------------------------------
- */
-
-Bool
-vmw_video_init(struct vmw_customizer *vmw)
-{
- ScrnInfoPtr pScrn = vmw->pScrn;
- ScreenPtr pScreen = pScrn->pScreen;
- XF86VideoAdaptorPtr *overlayAdaptors, *newAdaptors = NULL;
- XF86VideoAdaptorPtr newAdaptor = NULL;
- int numAdaptors;
- unsigned int ntot, nfree;
-
- debug_printf("%s: enter\n", __func__);
-
- if (vmw_ioctl_num_streams(vmw, &ntot, &nfree) != 0) {
- debug_printf("No stream ioctl support\n");
- return FALSE;
- }
-
- if (nfree == 0) {
- debug_printf("No free streams\n");
- return FALSE;
- }
-
- numAdaptors = xf86XVListGenericAdaptors(pScrn, &overlayAdaptors);
-
- newAdaptor = vmw_video_init_adaptor(pScrn, vmw);
- if (!newAdaptor) {
- debug_printf("Failed to initialize Xv extension\n");
- return FALSE;
- }
-
- if (!numAdaptors) {
- numAdaptors = 1;
- overlayAdaptors = &newAdaptor;
- } else {
- newAdaptors = xalloc((numAdaptors + 1) *
- sizeof(XF86VideoAdaptorPtr*));
- if (!newAdaptors) {
- xf86XVFreeVideoAdaptorRec(newAdaptor);
- return FALSE;
- }
-
- memcpy(newAdaptors, overlayAdaptors,
- numAdaptors * sizeof(XF86VideoAdaptorPtr));
- newAdaptors[numAdaptors++] = newAdaptor;
- overlayAdaptors = newAdaptors;
- }
-
- if (!xf86XVScreenInit(pScreen, overlayAdaptors, numAdaptors)) {
- debug_printf("Failed to initialize Xv extension\n");
- xf86XVFreeVideoAdaptorRec(newAdaptor);
- return FALSE;
- }
-
- if (newAdaptors) {
- xfree(newAdaptors);
- }
-
- debug_printf("Initialized VMware Xv extension successfully\n");
-
- return TRUE;
-}
-
-
-/*
- *-----------------------------------------------------------------------------
- *
- * vmw_video_close --
- *
- * Unitializes video.
- *
- * Results:
- * TRUE.
- *
- * Side effects:
- * vmw->video_priv = NULL
- *
- *-----------------------------------------------------------------------------
- */
-
-Bool
-vmw_video_close(struct vmw_customizer *vmw)
-{
- ScrnInfoPtr pScrn = vmw->pScrn;
- struct vmw_video_private *video;
- int i;
-
- debug_printf("%s: enter\n", __func__);
-
- video = vmw->video_priv;
- if (!video)
- return TRUE;
-
- for (i = 0; i < VMWARE_VID_NUM_PORTS; ++i) {
- /* make sure the port is stoped as well */
- vmw_xv_stop_video(pScrn, &video->port[i], TRUE);
- vmw_ioctl_unref_stream(vmw, video->port[i].streamId);
- }
-
- /* XXX: I'm sure this function is missing code for turning off Xv */
-
- free(vmw->video_priv);
- vmw->video_priv = NULL;
-
- return TRUE;
-}
-
-
-/*
- *-----------------------------------------------------------------------------
- *
- * vmw_video_stop_all --
- *
- * Stop all video streams from playing.
- *
- * Results:
- * None.
- *
- * Side effects:
- * All buffers are freed.
- *
- *-----------------------------------------------------------------------------
- */
-
-void vmw_video_stop_all(struct vmw_customizer *vmw)
-{
- ScrnInfoPtr pScrn = vmw->pScrn;
- struct vmw_video_private *video = vmw->video_priv;
- int i;
-
- debug_printf("%s: enter\n", __func__);
-
- if (!video)
- return;
-
- for (i = 0; i < VMWARE_VID_NUM_PORTS; ++i) {
- vmw_xv_stop_video(pScrn, &video->port[i], TRUE);
- }
-}
-
-
-/*
- *-----------------------------------------------------------------------------
- *
- * vmw_video_init_adaptor --
- *
- * Initializes a XF86VideoAdaptor structure with the capabilities and
- * functions supported by this video driver.
- *
- * Results:
- * On success initialized XF86VideoAdaptor struct or NULL on error
- *
- * Side effects:
- * None.
- *
- *-----------------------------------------------------------------------------
- */
-
-static XF86VideoAdaptorPtr
-vmw_video_init_adaptor(ScrnInfoPtr pScrn, struct vmw_customizer *vmw)
-{
- XF86VideoAdaptorPtr adaptor;
- struct vmw_video_private *video;
- int i;
-
- debug_printf("%s: enter \n", __func__);
-
- adaptor = xf86XVAllocateVideoAdaptorRec(pScrn);
- if (!adaptor) {
- debug_printf("Not enough memory\n");
- return NULL;
- }
-
- video = xcalloc(1, sizeof(*video));
- if (!video) {
- debug_printf("Not enough memory.\n");
- xf86XVFreeVideoAdaptorRec(adaptor);
- return NULL;
- }
-
- vmw->video_priv = video;
-
- adaptor->type = XvInputMask | XvImageMask | XvWindowMask;
- adaptor->flags = VIDEO_OVERLAID_IMAGES | VIDEO_CLIP_TO_VIEWPORT;
- adaptor->name = "VMware Video Engine";
- adaptor->nEncodings = VMWARE_VID_NUM_ENCODINGS;
- adaptor->pEncodings = vmwareVideoEncodings;
- adaptor->nFormats = VMWARE_VID_NUM_FORMATS;
- adaptor->pFormats = vmwareVideoFormats;
- adaptor->nPorts = VMWARE_VID_NUM_PORTS;
- adaptor->pPortPrivates = video->port_ptr;
-
- for (i = 0; i < VMWARE_VID_NUM_PORTS; ++i) {
- vmw_ioctl_claim_stream(vmw, &video->port[i].streamId);
- video->port[i].play = vmw_video_port_init;
- video->port[i].flags = SVGA_VIDEO_FLAG_COLORKEY;
- video->port[i].colorKey = VMWARE_VIDEO_COLORKEY;
- video->port[i].isAutoPaintColorkey = TRUE;
- adaptor->pPortPrivates[i].ptr = &video->port[i];
- }
-
- adaptor->nAttributes = VMWARE_VID_NUM_ATTRIBUTES;
- adaptor->pAttributes = vmwareVideoAttributes;
-
- adaptor->nImages = VMWARE_VID_NUM_IMAGES;
- adaptor->pImages = vmwareVideoImages;
-
- adaptor->PutVideo = NULL;
- adaptor->PutStill = NULL;
- adaptor->GetVideo = NULL;
- adaptor->GetStill = NULL;
- adaptor->StopVideo = vmw_xv_stop_video;
- adaptor->SetPortAttribute = vmw_xv_set_port_attribute;
- adaptor->GetPortAttribute = vmw_xv_get_port_attribute;
- adaptor->QueryBestSize = vmw_xv_query_best_size;
- adaptor->PutImage = vmw_xv_put_image;
- adaptor->QueryImageAttributes = vmw_xv_query_image_attributes;
-
- debug_printf("%s: done %p\n", __func__, adaptor);
-
- return adaptor;
-}
-
-
-/*
- *-----------------------------------------------------------------------------
- *
- * vmw_video_port_init --
- *
- * Initializes a video stream in response to the first PutImage() on a
- * video stream. The process goes as follows:
- * - Figure out characteristics according to format
- * - Allocate offscreen memory
- * - Pass on video to Play() functions
- *
- * Results:
- * Success or XvBadAlloc on failure.
- *
- * Side effects:
- * Video stream is initialized and its first frame sent to the host
- * (done by VideoPlay() function called at the end)
- *
- *-----------------------------------------------------------------------------
- */
-
-static int
-vmw_video_port_init(ScrnInfoPtr pScrn, struct vmw_video_port *port,
- short src_x, short src_y, short drw_x,
- short drw_y, short src_w, short src_h,
- short drw_w, short drw_h, int format,
- unsigned char *buf, short width,
- short height, RegionPtr clipBoxes)
-{
- struct vmw_customizer *vmw = vmw_customizer(xorg_customizer(pScrn));
- unsigned short w, h;
- int i, ret;
-
- debug_printf("\t%s: id %d, format %d\n", __func__, port->streamId, format);
-
- w = width;
- h = height;
- /* init all the format attributes, used for buffers */
- port->size = vmw_xv_query_image_attributes(pScrn, format, &w, &h,
- port->pitches, port->offsets);
-
- if (port->size == -1)
- return XvBadAlloc;
-
- port->play = vmw_video_port_play;
-
- for (i = 0; i < VMWARE_VID_NUM_BUFFERS; ++i) {
- ret = vmw_video_buffer_alloc(vmw, port->size, &port->bufs[i]);
- if (ret != Success)
- break;
- }
-
- /* Free all allocated buffers on failure */
- if (ret != Success) {
- for (--i; i >= 0; --i) {
- vmw_video_buffer_free(vmw, &port->bufs[i]);
- }
- return ret;
- }
-
- port->currBuf = 0;
-
- REGION_COPY(pScrn->pScreen, &port->clipBoxes, clipBoxes);
-
- if (port->isAutoPaintColorkey)
- xf86XVFillKeyHelper(pScrn->pScreen, port->colorKey, clipBoxes);
-
- return port->play(pScrn, port, src_x, src_y, drw_x, drw_y, src_w, src_h,
- drw_w, drw_h, format, buf, width, height, clipBoxes);
-}
-
-
-/*
- *-----------------------------------------------------------------------------
- *
- * vmw_video_port_play --
- *
- * Sends all the attributes associated with the video frame using the
- * FIFO ESCAPE mechanism to the host.
- *
- * Results:
- * Always returns Success.
- *
- * Side effects:
- * None.
- *
- *-----------------------------------------------------------------------------
- */
-
-static int
-vmw_video_port_play(ScrnInfoPtr pScrn, struct vmw_video_port *port,
- short src_x, short src_y, short drw_x,
- short drw_y, short src_w, short src_h,
- short drw_w, short drw_h, int format,
- unsigned char *buf, short width,
- short height, RegionPtr clipBoxes)
-{
- struct vmw_customizer *vmw = vmw_customizer(xorg_customizer(pScrn));
- struct drm_vmw_control_stream_arg arg;
- unsigned short w, h;
- int size;
- int ret;
-
- debug_printf("\t%s: enter\n", __func__);
-
- w = width;
- h = height;
-
- /* we don't update the ports size */
- size = vmw_xv_query_image_attributes(pScrn, format, &w, &h,
- port->pitches, port->offsets);
-
- if (size > port->size) {
- debug_printf("\t%s: Increase in size of Xv video frame streamId:%d.\n",
- __func__, port->streamId);
- vmw_xv_stop_video(pScrn, port, TRUE);
- return port->play(pScrn, port, src_x, src_y, drw_x, drw_y, src_w,
- src_h, drw_w, drw_h, format, buf, width, height,
- clipBoxes);
- }
-
- memcpy(port->bufs[port->currBuf].data, buf, port->size);
-
- memset(&arg, 0, sizeof(arg));
-
- arg.stream_id = port->streamId;
- arg.enabled = TRUE;
- arg.flags = port->flags;
- arg.color_key = port->colorKey;
- arg.handle = port->bufs[port->currBuf].handle;
- arg.format = format;
- arg.size = port->size;
- arg.width = w;
- arg.height = h;
- arg.src.x = src_x;
- arg.src.y = src_y;
- arg.src.w = src_w;
- arg.src.h = src_h;
- arg.dst.x = drw_x;
- arg.dst.y = drw_y;
- arg.dst.w = drw_w;
- arg.dst.h = drw_h;
- arg.pitch[0] = port->pitches[0];
- arg.pitch[1] = port->pitches[1];
- arg.pitch[2] = port->pitches[2];
- arg.offset = 0;
-
- /*
- * Update the clipList and paint the colorkey, if required.
- */
- if (!REGION_EQUAL(pScrn->pScreen, &port->clipBoxes, clipBoxes)) {
- REGION_COPY(pScrn->pScreen, &port->clipBoxes, clipBoxes);
- if (port->isAutoPaintColorkey) {
- xf86XVFillKeyHelper(pScrn->pScreen, port->colorKey, clipBoxes);
- }
- }
-
- ret = drmCommandWrite(vmw->fd, DRM_VMW_CONTROL_STREAM, &arg, sizeof(arg));
- if (ret) {
- vmw_video_port_cleanup(pScrn, port);
- return XvBadAlloc;
- }
-
- if (++(port->currBuf) >= VMWARE_VID_NUM_BUFFERS)
- port->currBuf = 0;
-
- return Success;
-}
-
-
-/*
- *-----------------------------------------------------------------------------
- *
- * vmw_video_port_cleanup --
- *
- * Frees up all resources (if any) taken by a video stream.
- *
- * Results:
- * None.
- *
- * Side effects:
- * Same as above.
- *
- *-----------------------------------------------------------------------------
- */
-
-static void
-vmw_video_port_cleanup(ScrnInfoPtr pScrn, struct vmw_video_port *port)
-{
- struct vmw_customizer *vmw = vmw_customizer(xorg_customizer(pScrn));
- uint32 id, colorKey, flags;
- Bool isAutoPaintColorkey;
- int i;
-
- debug_printf("\t%s: enter\n", __func__);
-
- for (i = 0; i < VMWARE_VID_NUM_BUFFERS; i++) {
- vmw_video_buffer_free(vmw, &port->bufs[i]);
- }
-
- /*
- * reset stream for next video
- */
- id = port->streamId;
- colorKey = port->colorKey;
- flags = port->flags;
- isAutoPaintColorkey = port->isAutoPaintColorkey;
-
- memset(port, 0, sizeof(*port));
-
- port->streamId = id;
- port->play = vmw_video_port_init;
- port->colorKey = colorKey;
- port->flags = flags;
- port->isAutoPaintColorkey = isAutoPaintColorkey;
-}
-
-
-/*
- *-----------------------------------------------------------------------------
- *
- * vmw_video_buffer_alloc --
- *
- * Allocates and map a kernel buffer to be used as data storage.
- *
- * Results:
- * XvBadAlloc on failure, otherwise Success.
- *
- * Side effects:
- * Calls into the kernel, sets members of out.
- *
- *-----------------------------------------------------------------------------
- */
-
-static int
-vmw_video_buffer_alloc(struct vmw_customizer *vmw, int size,
- struct vmw_video_buffer *out)
-{
- out->buf = vmw_ioctl_buffer_create(vmw, size, &out->handle);
- if (!out->buf)
- return XvBadAlloc;
-
- out->data = vmw_ioctl_buffer_map(vmw, out->buf);
- if (!out->data) {
- vmw_ioctl_buffer_destroy(vmw, out->buf);
-
- out->handle = 0;
- out->buf = NULL;
-
- return XvBadAlloc;
- }
-
- out->size = size;
- out->extra_data = xcalloc(1, size);
-
- debug_printf("\t\t%s: allocated buffer %p of size %i\n", __func__, out, size);
-
- return Success;
-}
-
-
-/*
- *-----------------------------------------------------------------------------
- *
- * vmw_video_buffer_free --
- *
- * Frees and unmaps an allocated kernel buffer.
- *
- * Results:
- * Success.
- *
- * Side effects:
- * Calls into the kernel, sets members of out to 0.
- *
- *-----------------------------------------------------------------------------
- */
-
-static int
-vmw_video_buffer_free(struct vmw_customizer *vmw,
- struct vmw_video_buffer *out)
-{
- if (out->size == 0)
- return Success;
-
- xfree(out->extra_data);
- vmw_ioctl_buffer_unmap(vmw, out->buf);
- vmw_ioctl_buffer_destroy(vmw, out->buf);
-
- out->buf = NULL;
- out->data = NULL;
- out->handle = 0;
- out->size = 0;
-
- debug_printf("\t\t%s: freed buffer %p\n", __func__, out);
-
- return Success;
-}
-
-
-/*
- *-----------------------------------------------------------------------------
- *
- * vmw_xv_put_image --
- *
- * Main video playback function. It copies the passed data which is in
- * the specified format (e.g. FOURCC_YV12) into the overlay.
- *
- * If sync is TRUE the driver should not return from this
- * function until it is through reading the data from buf.
- *
- * Results:
- * Success or XvBadAlloc on failure
- *
- * Side effects:
- * Video port will be played(initialized if 1st frame) on success
- * or will fail on error.
- *
- *-----------------------------------------------------------------------------
- */
-
-static int
-vmw_xv_put_image(ScrnInfoPtr pScrn, short src_x, short src_y,
- short drw_x, short drw_y, short src_w, short src_h,
- short drw_w, short drw_h, int format,
- unsigned char *buf, short width, short height,
- Bool sync, RegionPtr clipBoxes, pointer data,
- DrawablePtr dst)
-{
- struct vmw_customizer *vmw = vmw_customizer(xorg_customizer(pScrn));
- struct vmw_video_port *port = data;
-
- debug_printf("%s: enter (%u, %u) (%ux%u) (%u, %u) (%ux%u) (%ux%u)\n", __func__,
- src_x, src_y, src_w, src_h,
- drw_x, drw_y, drw_w, drw_h,
- width, height);
-
- if (!vmw->video_priv)
- return XvBadAlloc;
-
- return port->play(pScrn, port, src_x, src_y, drw_x, drw_y, src_w, src_h,
- drw_w, drw_h, format, buf, width, height, clipBoxes);
-}
-
-
-/*
- *-----------------------------------------------------------------------------
- *
- * vmw_xv_stop_video --
- *
- * Called when we should stop playing video for a particular stream. If
- * Cleanup is FALSE, the "stop" operation is only temporary, and thus we
- * don't do anything. If Cleanup is TRUE we kill the video port by
- * sending a message to the host and freeing up the stream.
- *
- * Results:
- * None.
- *
- * Side effects:
- * See above.
- *
- *-----------------------------------------------------------------------------
- */
-
-static void
-vmw_xv_stop_video(ScrnInfoPtr pScrn, pointer data, Bool cleanup)
-{
- struct vmw_customizer *vmw = vmw_customizer(xorg_customizer(pScrn));
- struct vmw_video_port *port = data;
- struct drm_vmw_control_stream_arg arg;
- int ret;
-
- debug_printf("%s: cleanup is %s\n", __func__, cleanup ? "TRUE" : "FALSE");
-
- if (!vmw->video_priv)
- return;
-
- if (!cleanup)
- return;
-
-
- memset(&arg, 0, sizeof(arg));
- arg.stream_id = port->streamId;
- arg.enabled = FALSE;
-
- ret = drmCommandWrite(vmw->fd, DRM_VMW_CONTROL_STREAM, &arg, sizeof(arg));
- assert(ret == 0);
-
- vmw_video_port_cleanup(pScrn, port);
-}
-
-
-/*
- *-----------------------------------------------------------------------------
- *
- * vmw_xv_query_image_attributes --
- *
- * From the spec: This function is called to let the driver specify how data
- * for a particular image of size width by height should be stored.
- * Sometimes only the size and corrected width and height are needed. In
- * that case pitches and offsets are NULL.
- *
- * Results:
- * The size of the memory required for the image, or -1 on error.
- *
- * Side effects:
- * None.
- *
- *-----------------------------------------------------------------------------
- */
-
-static int
-vmw_xv_query_image_attributes(ScrnInfoPtr pScrn, int format,
- unsigned short *width, unsigned short *height,
- int *pitches, int *offsets)
-{
- INT32 size, tmp;
-
- if (*width > VMWARE_VID_MAX_WIDTH) {
- *width = VMWARE_VID_MAX_WIDTH;
- }
- if (*height > VMWARE_VID_MAX_HEIGHT) {
- *height = VMWARE_VID_MAX_HEIGHT;
- }
-
- *width = (*width + 1) & ~1;
- if (offsets != NULL) {
- offsets[0] = 0;
- }
-
- switch (format) {
- case FOURCC_YV12:
- *height = (*height + 1) & ~1;
- size = (*width + 3) & ~3;
- if (pitches) {
- pitches[0] = size;
- }
- size *= *height;
- if (offsets) {
- offsets[1] = size;
- }
- tmp = ((*width >> 1) + 3) & ~3;
- if (pitches) {
- pitches[1] = pitches[2] = tmp;
- }
- tmp *= (*height >> 1);
- size += tmp;
- if (offsets) {
- offsets[2] = size;
- }
- size += tmp;
- break;
- case FOURCC_UYVY:
- case FOURCC_YUY2:
- size = *width * 2;
- if (pitches) {
- pitches[0] = size;
- }
- size *= *height;
- break;
- default:
- debug_printf("Query for invalid video format %d\n", format);
- return -1;
- }
- return size;
-}
-
-
-/*
- *-----------------------------------------------------------------------------
- *
- * vmw_xv_set_port_attribute --
- *
- * From the spec: A port may have particular attributes such as colorKey, hue,
- * saturation, brightness or contrast. Xv clients set these
- * attribute values by sending attribute strings (Atoms) to the server.
- *
- * Results:
- * Success if the attribute exists and XvBadAlloc otherwise.
- *
- * Side effects:
- * The respective attribute gets the new value.
- *
- *-----------------------------------------------------------------------------
- */
-
-static int
-vmw_xv_set_port_attribute(ScrnInfoPtr pScrn, Atom attribute,
- INT32 value, pointer data)
-{
- struct vmw_video_port *port = data;
- Atom xvColorKey = MAKE_ATOM("XV_COLORKEY");
- Atom xvAutoPaint = MAKE_ATOM("XV_AUTOPAINT_COLORKEY");
-
- if (attribute == xvColorKey) {
- debug_printf("%s: Set colorkey:0x%x\n", __func__, (unsigned)value);
- port->colorKey = value;
- } else if (attribute == xvAutoPaint) {
- debug_printf("%s: Set autoPaint: %s\n", __func__, value? "TRUE": "FALSE");
- port->isAutoPaintColorkey = value;
- } else {
- return XvBadAlloc;
- }
-
- return Success;
-}
-
-
-/*
- *-----------------------------------------------------------------------------
- *
- * vmw_xv_get_port_attribute --
- *
- * From the spec: A port may have particular attributes such as hue,
- * saturation, brightness or contrast. Xv clients get these
- * attribute values by sending attribute strings (Atoms) to the server
- *
- * Results:
- * Success if the attribute exists and XvBadAlloc otherwise.
- *
- * Side effects:
- * "value" contains the requested attribute on success.
- *
- *-----------------------------------------------------------------------------
- */
-
-static int
-vmw_xv_get_port_attribute(ScrnInfoPtr pScrn, Atom attribute,
- INT32 *value, pointer data)
-{
- struct vmw_video_port *port = data;
- Atom xvColorKey = MAKE_ATOM("XV_COLORKEY");
- Atom xvAutoPaint = MAKE_ATOM("XV_AUTOPAINT_COLORKEY");
-
- if (attribute == xvColorKey) {
- *value = port->colorKey;
- } else if (attribute == xvAutoPaint) {
- *value = port->isAutoPaintColorkey;
- } else {
- return XvBadAlloc;
- }
-
- return Success;
-}
-
-
-/*
- *-----------------------------------------------------------------------------
- *
- * vmw_xv_query_best_size --
- *
- * From the spec: QueryBestSize provides the client with a way to query what
- * the destination dimensions would end up being if they were to request
- * that an area vid_w by vid_h from the video stream be scaled to rectangle
- * of drw_w by drw_h on the screen. Since it is not expected that all
- * hardware will be able to get the target dimensions exactly, it is
- * important that the driver provide this function.
- *
- * This function seems to never be called, but to be on the safe side
- * we apply the same logic that QueryImageAttributes has for width
- * and height.
- *
- * Results:
- * None.
- *
- * Side effects:
- * None.
- *
- *-----------------------------------------------------------------------------
- */
-
-static void
-vmw_xv_query_best_size(ScrnInfoPtr pScrn, Bool motion,
- short vid_w, short vid_h, short drw_w,
- short drw_h, unsigned int *p_w,
- unsigned int *p_h, pointer data)
-{
- *p_w = (drw_w + 1) & ~1;
- *p_h = drw_h;
-
- return;
-}
diff --git a/src/gallium/winsys/drm/vmware/xorg/vmw_xorg.c b/src/gallium/winsys/drm/vmware/xorg/vmw_xorg.c
deleted file mode 100644
index 87aad25b24..0000000000
--- a/src/gallium/winsys/drm/vmware/xorg/vmw_xorg.c
+++ /dev/null
@@ -1,191 +0,0 @@
-/**********************************************************
- * Copyright 2008-2009 VMware, Inc. All rights reserved.
- *
- * Permission is hereby granted, free of charge, to any person
- * obtaining a copy of this software and associated documentation
- * files (the "Software"), to deal in the Software without
- * restriction, including without limitation the rights to use, copy,
- * modify, merge, publish, distribute, sublicense, and/or sell copies
- * of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be
- * included in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- **********************************************************/
-
-/**
- * @file
- * Glue file for Xorg State Tracker.
- *
- * @author Alan Hourihane <alanh@tungstengraphics.com>
- * @author Jakob Bornecrantz <wallbraker@gmail.com>
- */
-
-#include "vmw_hook.h"
-
-
-/*
- * Defines and modinfo
- */
-
-#define VMWGFX_DRIVER_NAME "vmwgfx"
-
-#define VMW_STRING_INNER(s) #s
-#define VMW_STRING(str) VMW_STRING_INNER(str)
-
-#define VMWGFX_VERSION_MAJOR 11
-#define VMWGFX_VERSION_MINOR 0
-#define VMWGFX_VERSION_PATCH 0
-#define VMWGFX_VERSION_STRING_MAJOR VMW_STRING(VMWGFX_VERSION_MAJOR)
-#define VMWGFX_VERSION_STRING_MINOR VMW_STRING(VMWGFX_VERSION_MINOR)
-#define VMWGFX_VERSION_STRING_PATCH VMW_STRING(VMWGFX_VERSION_PATCH)
-
-#define VMWGFX_DRIVER_VERSION \
- (VMWGFX_VERSION_MAJOR * 65536 + VMWGFX_VERSION_MINOR * 256 + VMWGFX_VERSION_PATCH)
-#define VMWGFX_DRIVER_VERSION_STRING \
- VMWGFX_VERSION_STRING_MAJOR "." VMWGFX_VERSION_STRING_MINOR \
- "." VMWGFX_VERSION_STRING_PATCH
-
-/*
- * Standard four digit version string expected by VMware Tools installer.
- * As the driver's version is only {major, minor, patchlevel}, simply append an
- * extra zero for the fourth digit.
- */
-#ifdef __GNUC__
-_X_EXPORT const char vmwgfx_drv_modinfo[] __attribute__((section(".modinfo"),unused)) =
- "version=" VMWGFX_DRIVER_VERSION_STRING ".0";
-#endif
-
-static void vmw_xorg_identify(int flags);
-_X_EXPORT Bool vmw_xorg_pci_probe(DriverPtr driver,
- int entity_num,
- struct pci_device *device,
- intptr_t match_data);
-
-
-/*
- * Tables
- */
-
-static const struct pci_id_match vmw_xorg_device_match[] = {
- {0x15ad, PCI_MATCH_ANY, PCI_MATCH_ANY, PCI_MATCH_ANY, 0, 0, 0},
- {0, 0, 0, 0, 0, 0, 0},
-};
-
-static SymTabRec vmw_xorg_chipsets[] = {
- {PCI_MATCH_ANY, "VMware SVGA Device"},
- {-1, NULL}
-};
-
-static PciChipsets vmw_xorg_pci_devices[] = {
- {PCI_MATCH_ANY, PCI_MATCH_ANY, NULL},
- {-1, -1, NULL}
-};
-
-static XF86ModuleVersionInfo vmw_xorg_version = {
- VMWGFX_DRIVER_NAME,
- MODULEVENDORSTRING,
- MODINFOSTRING1,
- MODINFOSTRING2,
- XORG_VERSION_CURRENT,
- VMWGFX_VERSION_MAJOR, VMWGFX_VERSION_MINOR, VMWGFX_VERSION_PATCH,
- ABI_CLASS_VIDEODRV,
- ABI_VIDEODRV_VERSION,
- MOD_CLASS_VIDEODRV,
- {0, 0, 0, 0}
-};
-
-/*
- * Xorg driver exported structures
- */
-
-_X_EXPORT DriverRec vmwgfx = {
- 1,
- VMWGFX_DRIVER_NAME,
- vmw_xorg_identify,
- NULL,
- xorg_tracker_available_options,
- NULL,
- 0,
- NULL,
- vmw_xorg_device_match,
- vmw_xorg_pci_probe
-};
-
-static MODULESETUPPROTO(vmw_xorg_setup);
-
-_X_EXPORT XF86ModuleData vmwgfxModuleData = {
- &vmw_xorg_version,
- vmw_xorg_setup,
- NULL
-};
-
-
-/*
- * Xorg driver functions
- */
-
-static pointer
-vmw_xorg_setup(pointer module, pointer opts, int *errmaj, int *errmin)
-{
- static Bool setupDone = 0;
-
- /* This module should be loaded only once, but check to be sure.
- */
- if (!setupDone) {
- setupDone = 1;
- xf86AddDriver(&vmwgfx, module, HaveDriverFuncs);
-
- /*
- * The return value must be non-NULL on success even though there
- * is no TearDownProc.
- */
- return (pointer) 1;
- } else {
- if (errmaj)
- *errmaj = LDR_ONCEONLY;
- return NULL;
- }
-}
-
-static void
-vmw_xorg_identify(int flags)
-{
- xf86PrintChipsets("vmwgfx", "Driver for VMware SVGA device",
- vmw_xorg_chipsets);
-}
-
-_X_EXPORT Bool
-vmw_xorg_pci_probe(DriverPtr driver,
- int entity_num, struct pci_device *device, intptr_t match_data)
-{
- ScrnInfoPtr scrn = NULL;
- EntityInfoPtr entity;
-
- scrn = xf86ConfigPciEntity(scrn, 0, entity_num, vmw_xorg_pci_devices,
- NULL, NULL, NULL, NULL, NULL);
- if (scrn != NULL) {
- scrn->driverVersion = 1;
- scrn->driverName = "vmwgfx";
- scrn->name = "vmwgfx";
- scrn->Probe = NULL;
-
- entity = xf86GetEntityInfo(entity_num);
-
- /* Use all the functions from the xorg tracker */
- xorg_tracker_set_functions(scrn);
-
- vmw_screen_set_functions(scrn);
- }
- return scrn != NULL;
-}