1760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org/************************************************************************** 2760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org * 3760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org * Copyright 2010 VMware, Inc. 4760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org * All Rights Reserved. 5760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org * 6760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org * Permission is hereby granted, free of charge, to any person obtaining a 7760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org * copy of this software and associated documentation files (the 8760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org * "Software"), to deal in the Software without restriction, including 9760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org * without limitation the rights to use, copy, modify, merge, publish, 10760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org * distribute, sub license, and/or sell copies of the Software, and to 11760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org * permit persons to whom the Software is furnished to do so, subject to 12760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org * the following conditions: 13760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org * 14760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 15760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 16760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL 17760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org * THE COPYRIGHT HOLDERS, AUTHORS AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, 18760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR 19760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE 20760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org * USE OR OTHER DEALINGS IN THE SOFTWARE. 21760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org * 22760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org * The above copyright notice and this permission notice (including the 23760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org * next paragraph) shall be included in all copies or substantial portions 24760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org * of the Software. 25760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org * 26760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org **************************************************************************/ 27760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org 28760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org/** 29760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org * @file 30760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org * Null software rasterizer winsys. 31760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org * 32760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org * There is no present support. Framebuffer data needs to be obtained via 33760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org * transfers. 34760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org * 35760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org * @author Jose Fonseca 36760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org */ 37760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org 38760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org#include <stdio.h> 39760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org 40760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org#include "pipe/p_format.h" 41760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org#include "util/u_memory.h" 42760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org#include "state_tracker/sw_winsys.h" 43760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org#include "null_sw_winsys.h" 44760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org 45760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org 46760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.orgstatic boolean 47760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.orgnull_sw_is_displaytarget_format_supported(struct sw_winsys *ws, 48760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org unsigned tex_usage, 49760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org enum pipe_format format ) 50760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org{ 51760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org return FALSE; 52760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org} 53760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org 54760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org 55760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.orgstatic void * 56760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.orgnull_sw_displaytarget_map(struct sw_winsys *ws, 57760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org struct sw_displaytarget *dt, 58760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org unsigned flags ) 59760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org{ 60760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org assert(0); 61760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org return NULL; 62760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org} 63760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org 64760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org 65760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.orgstatic void 66760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.orgnull_sw_displaytarget_unmap(struct sw_winsys *ws, 67760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org struct sw_displaytarget *dt ) 68760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org{ 69760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org assert(0); 70760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org} 71760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org 72760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org 73760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.orgstatic void 74760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.orgnull_sw_displaytarget_destroy(struct sw_winsys *winsys, 75760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org struct sw_displaytarget *dt) 76760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org{ 77760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org assert(0); 78760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org} 79760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org 80760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org 81760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.orgstatic struct sw_displaytarget * 82760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.orgnull_sw_displaytarget_create(struct sw_winsys *winsys, 83760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org unsigned tex_usage, 84760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org enum pipe_format format, 85760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org unsigned width, unsigned height, 86760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org unsigned alignment, 87760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org unsigned *stride) 88760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org{ 89760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org fprintf(stderr, "null_sw_displaytarget_create() returning NULL\n"); 90760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org return NULL; 91760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org} 92760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org 93760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org 94760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.orgstatic struct sw_displaytarget * 95760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.orgnull_sw_displaytarget_from_handle(struct sw_winsys *winsys, 96760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org const struct pipe_resource *templet, 97760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org struct winsys_handle *whandle, 98760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org unsigned *stride) 99760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org{ 100760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org return NULL; 101760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org} 102760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org 103760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org 104760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.orgstatic boolean 105760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.orgnull_sw_displaytarget_get_handle(struct sw_winsys *winsys, 106760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org struct sw_displaytarget *dt, 107760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org struct winsys_handle *whandle) 108760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org{ 109760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org assert(0); 110760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org return FALSE; 111760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org} 112760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org 113760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org 114760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.orgstatic void 115760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.orgnull_sw_displaytarget_display(struct sw_winsys *winsys, 116760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org struct sw_displaytarget *dt, 117760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org void *context_private) 118760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org{ 119760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org assert(0); 120760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org} 121760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org 122760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org 123760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.orgstatic void 124760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.orgnull_sw_destroy(struct sw_winsys *winsys) 125760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org{ 126760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org FREE(winsys); 127760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org} 128760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org 129760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org 130760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.orgstruct sw_winsys * 131760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.orgnull_sw_create(void) 132760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org{ 133760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org static struct sw_winsys *winsys; 134760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org 135760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org winsys = CALLOC_STRUCT(sw_winsys); 136760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org if (!winsys) 137760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org return NULL; 138760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org 139760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org winsys->destroy = null_sw_destroy; 140760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org winsys->is_displaytarget_format_supported = null_sw_is_displaytarget_format_supported; 141760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org winsys->displaytarget_create = null_sw_displaytarget_create; 142760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org winsys->displaytarget_from_handle = null_sw_displaytarget_from_handle; 143760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org winsys->displaytarget_get_handle = null_sw_displaytarget_get_handle; 144760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org winsys->displaytarget_map = null_sw_displaytarget_map; 145760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org winsys->displaytarget_unmap = null_sw_displaytarget_unmap; 146760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org winsys->displaytarget_display = null_sw_displaytarget_display; 147760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org winsys->displaytarget_destroy = null_sw_displaytarget_destroy; 148760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org 149760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org return winsys; 150760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org} 151