b37f9ef56c715feb5505437fade6f43feded1dd6vboxsync/* $Id$ */
b37f9ef56c715feb5505437fade6f43feded1dd6vboxsync/** @file
b37f9ef56c715feb5505437fade6f43feded1dd6vboxsync * DevVMWare/Shaderlib - Utility/Stub Functions & Data.
b37f9ef56c715feb5505437fade6f43feded1dd6vboxsync */
b37f9ef56c715feb5505437fade6f43feded1dd6vboxsync
b37f9ef56c715feb5505437fade6f43feded1dd6vboxsync/*
b37f9ef56c715feb5505437fade6f43feded1dd6vboxsync * Copyright (C) 2013-2014 Oracle Corporation
b37f9ef56c715feb5505437fade6f43feded1dd6vboxsync *
b37f9ef56c715feb5505437fade6f43feded1dd6vboxsync * This file is part of VirtualBox Open Source Edition (OSE), as
b37f9ef56c715feb5505437fade6f43feded1dd6vboxsync * available from http://www.virtualbox.org. This file is free software;
b37f9ef56c715feb5505437fade6f43feded1dd6vboxsync * you can redistribute it and/or modify it under the terms of the GNU
b37f9ef56c715feb5505437fade6f43feded1dd6vboxsync * General Public License (GPL) as published by the Free Software
b37f9ef56c715feb5505437fade6f43feded1dd6vboxsync * Foundation, in version 2 as it comes in the "COPYING" file of the
b37f9ef56c715feb5505437fade6f43feded1dd6vboxsync * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
b37f9ef56c715feb5505437fade6f43feded1dd6vboxsync * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
b37f9ef56c715feb5505437fade6f43feded1dd6vboxsync */
b37f9ef56c715feb5505437fade6f43feded1dd6vboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#include <iprt/err.h>
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#include <iprt/mem.h>
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#include <iprt/assert.h>
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#include <windows.h>
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#include "wined3d_private.h"
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncvoid *wined3d_rb_alloc(size_t size)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return RTMemAlloc(size);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncvoid *wined3d_rb_realloc(void *ptr, size_t size)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return RTMemRealloc(ptr, size);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncvoid wined3d_rb_free(void *ptr)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync RTMemFree(ptr);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync/* This small helper function is used to convert a bitmask into the number of masked bits */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncunsigned int count_bits(unsigned int mask)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync unsigned int count;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync for (count = 0; mask; ++count)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync {
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync mask &= mask - 1;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync }
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return count;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncUINT wined3d_log2i(UINT32 x)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync static const UINT l[] =
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync {
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync ~0U, 0, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync };
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync UINT32 i;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return (i = x >> 16) ? (x = i >> 8) ? l[x] + 24 : l[i] + 16 : (i = x >> 8) ? l[i] + 8 : l[x];
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync/* Set the shader type for this device, depending on the given capabilities
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * and the user preferences in wined3d_settings. */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncvoid select_shader_mode(const struct wined3d_gl_info *gl_info, int *ps_selected, int *vs_selected)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync *vs_selected = SHADER_GLSL;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync *ps_selected = SHADER_GLSL;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncconst char *debug_glerror(GLenum error) {
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync switch(error) {
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define GLERROR_TO_STR(u) case u: return #u
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync GLERROR_TO_STR(GL_NO_ERROR);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync GLERROR_TO_STR(GL_INVALID_ENUM);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync GLERROR_TO_STR(GL_INVALID_VALUE);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync GLERROR_TO_STR(GL_INVALID_OPERATION);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync GLERROR_TO_STR(GL_STACK_OVERFLOW);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync GLERROR_TO_STR(GL_STACK_UNDERFLOW);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync GLERROR_TO_STR(GL_OUT_OF_MEMORY);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync GLERROR_TO_STR(GL_INVALID_FRAMEBUFFER_OPERATION);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#undef GLERROR_TO_STR
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync default:
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return "unrecognized";
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync }
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncvoid dump_color_fixup_desc(struct color_fixup_desc fixup)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncvoid context_release(struct wined3d_context *context)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncstatic void CDECL wined3d_do_nothing(void)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncvoid (* CDECL wine_tsx11_lock_ptr)(void) = wined3d_do_nothing;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncvoid (* CDECL wine_tsx11_unlock_ptr)(void) = wined3d_do_nothing;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncLPVOID WINAPI VBoxHeapAlloc(HANDLE hHeap, DWORD heaptype,SIZE_T size)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return RTMemAllocZ(size);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncBOOL WINAPI VBoxHeapFree(HANDLE hHeap, DWORD heaptype,LPVOID ptr)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync RTMemFree(ptr);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return TRUE;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncLPVOID WINAPI VBoxHeapReAlloc(HANDLE hHeap,DWORD heaptype,LPVOID ptr ,SIZE_T size)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return RTMemRealloc(ptr, size);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncvoid VBoxDebugBreak()
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync AssertFailed();
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync