diff options
Diffstat (limited to 'src/mesa/pipe/failover')
-rw-r--r-- | src/mesa/pipe/failover/Makefile | 21 | ||||
-rw-r--r-- | src/mesa/pipe/failover/fo_context.c | 155 | ||||
-rw-r--r-- | src/mesa/pipe/failover/fo_context.h | 114 | ||||
-rw-r--r-- | src/mesa/pipe/failover/fo_state.c | 457 | ||||
-rw-r--r-- | src/mesa/pipe/failover/fo_state_emit.c | 137 | ||||
-rw-r--r-- | src/mesa/pipe/failover/fo_winsys.h | 45 |
6 files changed, 0 insertions, 929 deletions
diff --git a/src/mesa/pipe/failover/Makefile b/src/mesa/pipe/failover/Makefile deleted file mode 100644 index 72d0895c74..0000000000 --- a/src/mesa/pipe/failover/Makefile +++ /dev/null @@ -1,21 +0,0 @@ - -TOP = ../../../.. -include $(TOP)/configs/current - -LIBNAME = failover - -DRIVER_SOURCES = \ - fo_state.c \ - fo_state_emit.c \ - fo_context.c - -C_SOURCES = \ - $(COMMON_SOURCES) \ - $(DRIVER_SOURCES) - -ASM_SOURCES = - -include ../Makefile.template - -symlinks: - diff --git a/src/mesa/pipe/failover/fo_context.c b/src/mesa/pipe/failover/fo_context.c deleted file mode 100644 index 7ce4a7df17..0000000000 --- a/src/mesa/pipe/failover/fo_context.c +++ /dev/null @@ -1,155 +0,0 @@ -/************************************************************************** - * - * Copyright 2003 Tungsten Graphics, Inc., Cedar Park, Texas. - * 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, sub license, 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 (including the - * next paragraph) 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 NON-INFRINGEMENT. - * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS 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. - * - **************************************************************************/ - - -#include "pipe/p_defines.h" -#include "pipe/p_winsys.h" -#include "pipe/p_util.h" -#include "pipe/p_context.h" - -#include "fo_context.h" -#include "fo_winsys.h" - - - -static void failover_destroy( struct pipe_context *pipe ) -{ - struct failover_context *failover = failover_context( pipe ); - - free( failover ); -} - - - -static boolean failover_draw_elements( struct pipe_context *pipe, - struct pipe_buffer *indexBuffer, - unsigned indexSize, - unsigned prim, unsigned start, unsigned count) -{ - struct failover_context *failover = failover_context( pipe ); - - /* If there has been any statechange since last time, try hardware - * rendering again: - */ - if (failover->dirty) { - failover->mode = FO_HW; - } - - /* Try hardware: - */ - if (failover->mode == FO_HW) { - if (!failover->hw->draw_elements( failover->hw, - indexBuffer, - indexSize, - prim, - start, - count )) { - - failover->hw->flush( failover->hw, ~0 ); - failover->mode = FO_SW; - } - } - - /* Possibly try software: - */ - if (failover->mode == FO_SW) { - - if (failover->dirty) - failover_state_emit( failover ); - - failover->sw->draw_elements( failover->sw, - indexBuffer, - indexSize, - prim, - start, - count ); - - /* Be ready to switch back to hardware rendering without an - * intervening flush. Unlikely to be much performance impact to - * this: - */ - failover->sw->flush( failover->sw, ~0 ); - } - - return TRUE; -} - - -static boolean failover_draw_arrays( struct pipe_context *pipe, - unsigned prim, unsigned start, unsigned count) -{ - return failover_draw_elements(pipe, NULL, 0, prim, start, count); -} - - - -struct pipe_context *failover_create( struct pipe_context *hw, - struct pipe_context *sw ) -{ - struct failover_context *failover = CALLOC_STRUCT(failover_context); - if (failover == NULL) - return NULL; - - failover->hw = hw; - failover->sw = sw; - failover->pipe.winsys = hw->winsys; - failover->pipe.destroy = failover_destroy; - failover->pipe.is_format_supported = hw->is_format_supported; - failover->pipe.get_name = hw->get_name; - failover->pipe.get_vendor = hw->get_vendor; - failover->pipe.get_param = hw->get_param; - failover->pipe.get_paramf = hw->get_paramf; - - failover->pipe.draw_arrays = failover_draw_arrays; - failover->pipe.draw_elements = failover_draw_elements; - failover->pipe.clear = hw->clear; - - /* No software occlusion fallback (or other optional functionality) - * at this point - if the hardware doesn't support it, don't - * advertise it to the application. - */ - failover->pipe.begin_query = hw->begin_query; - failover->pipe.end_query = hw->end_query; - - failover_init_state_functions( failover ); - -#if 0 - failover->pipe.surface_alloc = hw->surface_alloc; -#endif - failover->pipe.get_tex_surface = hw->get_tex_surface; - - failover->pipe.surface_copy = hw->surface_copy; - failover->pipe.surface_fill = hw->surface_fill; - failover->pipe.texture_create = hw->texture_create; - failover->pipe.texture_release = hw->texture_release; - failover->pipe.flush = hw->flush; - - failover->dirty = 0; - - return &failover->pipe; -} - diff --git a/src/mesa/pipe/failover/fo_context.h b/src/mesa/pipe/failover/fo_context.h deleted file mode 100644 index 1dc87291c9..0000000000 --- a/src/mesa/pipe/failover/fo_context.h +++ /dev/null @@ -1,114 +0,0 @@ -/************************************************************************** - * - * Copyright 2007 Tungsten Graphics, Inc., Cedar Park, Texas. - * 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, sub license, 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 (including the - * next paragraph) 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 NON-INFRINGEMENT. - * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS 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. - * - **************************************************************************/ - -/* Authors: Keith Whitwell <keith@tungstengraphics.com> - */ - -#ifndef FO_CONTEXT_H -#define FO_CONTEXT_H - -#include "pipe/p_state.h" -#include "pipe/p_context.h" - - - -#define FO_NEW_VIEWPORT 0x1 -#define FO_NEW_RASTERIZER 0x2 -#define FO_NEW_FRAGMENT_SHADER 0x4 -#define FO_NEW_BLEND 0x8 -#define FO_NEW_CLIP 0x10 -#define FO_NEW_SCISSOR 0x20 -#define FO_NEW_STIPPLE 0x40 -#define FO_NEW_FRAMEBUFFER 0x80 -#define FO_NEW_ALPHA_TEST 0x100 -#define FO_NEW_DEPTH_STENCIL 0x200 -#define FO_NEW_SAMPLER 0x400 -#define FO_NEW_TEXTURE 0x800 -#define FO_NEW_VERTEX 0x2000 -#define FO_NEW_VERTEX_SHADER 0x4000 -#define FO_NEW_BLEND_COLOR 0x8000 -#define FO_NEW_CLEAR_COLOR 0x10000 -#define FO_NEW_VERTEX_BUFFER 0x20000 -#define FO_NEW_VERTEX_ELEMENT 0x40000 - - - -#define FO_HW 0 -#define FO_SW 1 - -struct fo_state { - void *sw_state; - void *hw_state; -}; -struct failover_context { - struct pipe_context pipe; /**< base class */ - - - /* The most recent drawing state as set by the driver: - */ - const struct fo_state *blend; - const struct fo_state *sampler[PIPE_MAX_SAMPLERS]; - const struct fo_state *depth_stencil; - const struct fo_state *rasterizer; - const struct fo_state *fragment_shader; - const struct fo_state *vertex_shader; - - struct pipe_blend_color blend_color; - struct pipe_clip_state clip; - struct pipe_framebuffer_state framebuffer; - struct pipe_poly_stipple poly_stipple; - struct pipe_scissor_state scissor; - struct pipe_texture *texture[PIPE_MAX_SAMPLERS]; - struct pipe_viewport_state viewport; - struct pipe_vertex_buffer vertex_buffer[PIPE_ATTRIB_MAX]; - struct pipe_vertex_element vertex_element[PIPE_ATTRIB_MAX]; - - unsigned dirty; - unsigned dirty_sampler; - unsigned dirty_texture; - unsigned dirty_vertex_buffer; - unsigned dirty_vertex_element; - - - unsigned mode; - struct pipe_context *hw; - struct pipe_context *sw; -}; - - - -void failover_init_state_functions( struct failover_context *failover ); -void failover_state_emit( struct failover_context *failover ); - -static INLINE struct failover_context * -failover_context( struct pipe_context *pipe ) -{ - return (struct failover_context *)pipe; -} - - -#endif /* FO_CONTEXT_H */ diff --git a/src/mesa/pipe/failover/fo_state.c b/src/mesa/pipe/failover/fo_state.c deleted file mode 100644 index 0fc5568da1..0000000000 --- a/src/mesa/pipe/failover/fo_state.c +++ /dev/null @@ -1,457 +0,0 @@ -/************************************************************************** - * - * Copyright 2007 Tungsten Graphics, Inc., Cedar Park, Texas. - * 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, sub license, 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 (including the - * next paragraph) 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 NON-INFRINGEMENT. - * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS 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. - * - **************************************************************************/ - -/* Authors: Keith Whitwell <keith@tungstengraphics.com> - */ - -#include "fo_context.h" - - -/* This looks like a lot of work at the moment - we're keeping a - * duplicate copy of the state up-to-date. - * - * This can change in two ways: - * - With constant state objects we would only need to save a pointer, - * not the whole object. - * - By adding a callback in the state tracker to re-emit state. The - * state tracker knows the current state already and can re-emit it - * without additional complexity. - * - * This works as a proof-of-concept, but a final version will have - * lower overheads. - */ - - - -static void * -failover_create_blend_state( struct pipe_context *pipe, - const struct pipe_blend_state *blend ) -{ - struct fo_state *state = malloc(sizeof(struct fo_state)); - struct failover_context *failover = failover_context(pipe); - - state->sw_state = failover->sw->create_blend_state(failover->sw, blend); - state->hw_state = failover->hw->create_blend_state(failover->hw, blend); - - return state; -} - -static void -failover_bind_blend_state( struct pipe_context *pipe, - void *blend ) -{ - struct failover_context *failover = failover_context(pipe); - struct fo_state *state = (struct fo_state *)blend; - failover->blend = state; - failover->dirty |= FO_NEW_BLEND; - failover->sw->bind_blend_state( failover->sw, state->sw_state ); - failover->hw->bind_blend_state( failover->hw, state->hw_state ); -} - -static void -failover_delete_blend_state( struct pipe_context *pipe, - void *blend ) -{ - struct fo_state *state = (struct fo_state*)blend; - struct failover_context *failover = failover_context(pipe); - - failover->sw->delete_blend_state(failover->sw, state->sw_state); - failover->hw->delete_blend_state(failover->hw, state->hw_state); - state->sw_state = 0; - state->hw_state = 0; - free(state); -} - -static void -failover_set_blend_color( struct pipe_context *pipe, - const struct pipe_blend_color *blend_color ) -{ - struct failover_context *failover = failover_context(pipe); - - failover->blend_color = *blend_color; - failover->dirty |= FO_NEW_BLEND_COLOR; - failover->sw->set_blend_color( failover->sw, blend_color ); - failover->hw->set_blend_color( failover->hw, blend_color ); -} - -static void -failover_set_clip_state( struct pipe_context *pipe, - const struct pipe_clip_state *clip ) -{ - struct failover_context *failover = failover_context(pipe); - - failover->clip = *clip; - failover->dirty |= FO_NEW_CLIP; - failover->sw->set_clip_state( failover->sw, clip ); - failover->hw->set_clip_state( failover->hw, clip ); -} - - -static void * -failover_create_depth_stencil_state(struct pipe_context *pipe, - const struct pipe_depth_stencil_alpha_state *templ) -{ - struct fo_state *state = malloc(sizeof(struct fo_state)); - struct failover_context *failover = failover_context(pipe); - - state->sw_state = failover->sw->create_depth_stencil_alpha_state(failover->sw, templ); - state->hw_state = failover->hw->create_depth_stencil_alpha_state(failover->hw, templ); - - return state; -} - -static void -failover_bind_depth_stencil_state(struct pipe_context *pipe, - void *depth_stencil) -{ - struct failover_context *failover = failover_context(pipe); - struct fo_state *state = (struct fo_state *)depth_stencil; - failover->depth_stencil = state; - failover->dirty |= FO_NEW_DEPTH_STENCIL; - failover->sw->bind_depth_stencil_alpha_state(failover->sw, state->sw_state); - failover->hw->bind_depth_stencil_alpha_state(failover->hw, state->hw_state); -} - -static void -failover_delete_depth_stencil_state(struct pipe_context *pipe, - void *ds) -{ - struct fo_state *state = (struct fo_state*)ds; - struct failover_context *failover = failover_context(pipe); - - failover->sw->delete_depth_stencil_alpha_state(failover->sw, state->sw_state); - failover->hw->delete_depth_stencil_alpha_state(failover->hw, state->hw_state); - state->sw_state = 0; - state->hw_state = 0; - free(state); -} - -static void -failover_set_framebuffer_state(struct pipe_context *pipe, - const struct pipe_framebuffer_state *framebuffer) -{ - struct failover_context *failover = failover_context(pipe); - - failover->framebuffer = *framebuffer; - failover->dirty |= FO_NEW_FRAMEBUFFER; - failover->sw->set_framebuffer_state( failover->sw, framebuffer ); - failover->hw->set_framebuffer_state( failover->hw, framebuffer ); -} - - -static void * -failover_create_fs_state(struct pipe_context *pipe, - const struct pipe_shader_state *templ) -{ - struct fo_state *state = malloc(sizeof(struct fo_state)); - struct failover_context *failover = failover_context(pipe); - - state->sw_state = failover->sw->create_fs_state(failover->sw, templ); - state->hw_state = failover->hw->create_fs_state(failover->hw, templ); - - return state; -} - -static void -failover_bind_fs_state(struct pipe_context *pipe, void *fs) -{ - struct failover_context *failover = failover_context(pipe); - struct fo_state *state = (struct fo_state*)fs; - failover->fragment_shader = state; - failover->dirty |= FO_NEW_FRAGMENT_SHADER; - failover->sw->bind_fs_state(failover->sw, state->sw_state); - failover->hw->bind_fs_state(failover->hw, state->hw_state); -} - -static void -failover_delete_fs_state(struct pipe_context *pipe, - void *fs) -{ - struct fo_state *state = (struct fo_state*)fs; - struct failover_context *failover = failover_context(pipe); - - failover->sw->delete_fs_state(failover->sw, state->sw_state); - failover->hw->delete_fs_state(failover->hw, state->hw_state); - state->sw_state = 0; - state->hw_state = 0; - free(state); -} - -static void * -failover_create_vs_state(struct pipe_context *pipe, - const struct pipe_shader_state *templ) -{ - struct fo_state *state = malloc(sizeof(struct fo_state)); - struct failover_context *failover = failover_context(pipe); - - state->sw_state = failover->sw->create_vs_state(failover->sw, templ); - state->hw_state = failover->hw->create_vs_state(failover->hw, templ); - - return state; -} - -static void -failover_bind_vs_state(struct pipe_context *pipe, - void *vs) -{ - struct failover_context *failover = failover_context(pipe); - - struct fo_state *state = (struct fo_state*)vs; - failover->vertex_shader = state; - failover->dirty |= FO_NEW_VERTEX_SHADER; - failover->sw->bind_vs_state(failover->sw, state->sw_state); - failover->hw->bind_vs_state(failover->hw, state->hw_state); -} - -static void -failover_delete_vs_state(struct pipe_context *pipe, - void *vs) -{ - struct fo_state *state = (struct fo_state*)vs; - struct failover_context *failover = failover_context(pipe); - - failover->sw->delete_vs_state(failover->sw, state->sw_state); - failover->hw->delete_vs_state(failover->hw, state->hw_state); - state->sw_state = 0; - state->hw_state = 0; - free(state); -} - -static void -failover_set_polygon_stipple( struct pipe_context *pipe, - const struct pipe_poly_stipple *stipple ) -{ - struct failover_context *failover = failover_context(pipe); - - failover->poly_stipple = *stipple; - failover->dirty |= FO_NEW_STIPPLE; - failover->sw->set_polygon_stipple( failover->sw, stipple ); - failover->hw->set_polygon_stipple( failover->hw, stipple ); -} - - -static void * -failover_create_rasterizer_state(struct pipe_context *pipe, - const struct pipe_rasterizer_state *templ) -{ - struct fo_state *state = malloc(sizeof(struct fo_state)); - struct failover_context *failover = failover_context(pipe); - - state->sw_state = failover->sw->create_rasterizer_state(failover->sw, templ); - state->hw_state = failover->hw->create_rasterizer_state(failover->hw, templ); - - return state; -} - -static void -failover_bind_rasterizer_state(struct pipe_context *pipe, - void *raster) -{ - struct failover_context *failover = failover_context(pipe); - - struct fo_state *state = (struct fo_state*)raster; - failover->rasterizer = state; - failover->dirty |= FO_NEW_RASTERIZER; - failover->sw->bind_rasterizer_state(failover->sw, state->sw_state); - failover->hw->bind_rasterizer_state(failover->hw, state->hw_state); -} - -static void -failover_delete_rasterizer_state(struct pipe_context *pipe, - void *raster) -{ - struct fo_state *state = (struct fo_state*)raster; - struct failover_context *failover = failover_context(pipe); - - failover->sw->delete_rasterizer_state(failover->sw, state->sw_state); - failover->hw->delete_rasterizer_state(failover->hw, state->hw_state); - state->sw_state = 0; - state->hw_state = 0; - free(state); -} - - -static void -failover_set_scissor_state( struct pipe_context *pipe, - const struct pipe_scissor_state *scissor ) -{ - struct failover_context *failover = failover_context(pipe); - - failover->scissor = *scissor; - failover->dirty |= FO_NEW_SCISSOR; - failover->sw->set_scissor_state( failover->sw, scissor ); - failover->hw->set_scissor_state( failover->hw, scissor ); -} - - -static void * -failover_create_sampler_state(struct pipe_context *pipe, - const struct pipe_sampler_state *templ) -{ - struct fo_state *state = malloc(sizeof(struct fo_state)); - struct failover_context *failover = failover_context(pipe); - - state->sw_state = failover->sw->create_sampler_state(failover->sw, templ); - state->hw_state = failover->hw->create_sampler_state(failover->hw, templ); - - return state; -} - -static void -failover_bind_sampler_state(struct pipe_context *pipe, - unsigned unit, void *sampler) -{ - struct failover_context *failover = failover_context(pipe); - struct fo_state *state = (struct fo_state*)sampler; - failover->sampler[unit] = state; - failover->dirty |= FO_NEW_SAMPLER; - failover->dirty_sampler |= (1<<unit); - failover->sw->bind_sampler_state(failover->sw, unit, - state->sw_state); - failover->hw->bind_sampler_state(failover->hw, unit, - state->hw_state); -} - -static void -failover_delete_sampler_state(struct pipe_context *pipe, void *sampler) -{ - struct fo_state *state = (struct fo_state*)sampler; - struct failover_context *failover = failover_context(pipe); - - failover->sw->delete_sampler_state(failover->sw, state->sw_state); - failover->hw->delete_sampler_state(failover->hw, state->hw_state); - state->sw_state = 0; - state->hw_state = 0; - free(state); -} - - -static void -failover_set_sampler_texture(struct pipe_context *pipe, - unsigned unit, - struct pipe_texture *texture) -{ - struct failover_context *failover = failover_context(pipe); - - failover->texture[unit] = texture; - failover->dirty |= FO_NEW_TEXTURE; - failover->dirty_texture |= (1<<unit); - failover->sw->set_sampler_texture( failover->sw, unit, texture ); - failover->hw->set_sampler_texture( failover->hw, unit, texture ); -} - - -static void -failover_set_viewport_state( struct pipe_context *pipe, - const struct pipe_viewport_state *viewport ) -{ - struct failover_context *failover = failover_context(pipe); - - failover->viewport = *viewport; - failover->dirty |= FO_NEW_VIEWPORT; - failover->sw->set_viewport_state( failover->sw, viewport ); - failover->hw->set_viewport_state( failover->hw, viewport ); -} - - -static void -failover_set_vertex_buffer(struct pipe_context *pipe, - unsigned unit, - const struct pipe_vertex_buffer *vertex_buffer) -{ - struct failover_context *failover = failover_context(pipe); - - failover->vertex_buffer[unit] = *vertex_buffer; - failover->dirty |= FO_NEW_VERTEX_BUFFER; - failover->dirty_vertex_buffer |= (1<<unit); - failover->sw->set_vertex_buffer( failover->sw, unit, vertex_buffer ); - failover->hw->set_vertex_buffer( failover->hw, unit, vertex_buffer ); -} - - -static void -failover_set_vertex_element(struct pipe_context *pipe, - unsigned unit, - const struct pipe_vertex_element *vertex_element) -{ - struct failover_context *failover = failover_context(pipe); - - failover->vertex_element[unit] = *vertex_element; - failover->dirty |= FO_NEW_VERTEX_ELEMENT; - failover->dirty_vertex_element |= (1<<unit); - failover->sw->set_vertex_element( failover->sw, unit, vertex_element ); - failover->hw->set_vertex_element( failover->hw, unit, vertex_element ); -} - -void -failover_set_constant_buffer(struct pipe_context *pipe, - uint shader, uint index, - const struct pipe_constant_buffer *buf) -{ - struct failover_context *failover = failover_context(pipe); - - assert(shader < PIPE_SHADER_TYPES); - assert(index == 0); - - failover->sw->set_constant_buffer(failover->sw, shader, index, buf); - failover->hw->set_constant_buffer(failover->hw, shader, index, buf); -} - - -void -failover_init_state_functions( struct failover_context *failover ) -{ - failover->pipe.create_blend_state = failover_create_blend_state; - failover->pipe.bind_blend_state = failover_bind_blend_state; - failover->pipe.delete_blend_state = failover_delete_blend_state; - failover->pipe.create_sampler_state = failover_create_sampler_state; - failover->pipe.bind_sampler_state = failover_bind_sampler_state; - failover->pipe.delete_sampler_state = failover_delete_sampler_state; - failover->pipe.create_depth_stencil_alpha_state = failover_create_depth_stencil_state; - failover->pipe.bind_depth_stencil_alpha_state = failover_bind_depth_stencil_state; - failover->pipe.delete_depth_stencil_alpha_state = failover_delete_depth_stencil_state; - failover->pipe.create_rasterizer_state = failover_create_rasterizer_state; - failover->pipe.bind_rasterizer_state = failover_bind_rasterizer_state; - failover->pipe.delete_rasterizer_state = failover_delete_rasterizer_state; - failover->pipe.create_fs_state = failover_create_fs_state; - failover->pipe.bind_fs_state = failover_bind_fs_state; - failover->pipe.delete_fs_state = failover_delete_fs_state; - failover->pipe.create_vs_state = failover_create_vs_state; - failover->pipe.bind_vs_state = failover_bind_vs_state; - failover->pipe.delete_vs_state = failover_delete_vs_state; - - failover->pipe.set_blend_color = failover_set_blend_color; - failover->pipe.set_clip_state = failover_set_clip_state; - failover->pipe.set_framebuffer_state = failover_set_framebuffer_state; - failover->pipe.set_polygon_stipple = failover_set_polygon_stipple; - failover->pipe.set_scissor_state = failover_set_scissor_state; - failover->pipe.set_sampler_texture = failover_set_sampler_texture; - failover->pipe.set_viewport_state = failover_set_viewport_state; - failover->pipe.set_vertex_buffer = failover_set_vertex_buffer; - failover->pipe.set_vertex_element = failover_set_vertex_element; - failover->pipe.set_constant_buffer = failover_set_constant_buffer; -} diff --git a/src/mesa/pipe/failover/fo_state_emit.c b/src/mesa/pipe/failover/fo_state_emit.c deleted file mode 100644 index c663dd4947..0000000000 --- a/src/mesa/pipe/failover/fo_state_emit.c +++ /dev/null @@ -1,137 +0,0 @@ -/************************************************************************** - * - * Copyright 2007 Tungsten Graphics, Inc., Cedar Park, Texas. - * 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, sub license, 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 (including the - * next paragraph) 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 NON-INFRINGEMENT. - * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS 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. - * - **************************************************************************/ - -/* Authors: Keith Whitwell <keith@tungstengraphics.com> - */ - -#include "fo_context.h" - -/* This looks like a lot of work at the moment - we're keeping a - * duplicate copy of the state up-to-date. - * - * This can change in two ways: - * - With constant state objects we would only need to save a pointer, - * not the whole object. - * - By adding a callback in the state tracker to re-emit state. The - * state tracker knows the current state already and can re-emit it - * without additional complexity. - * - * This works as a proof-of-concept, but a final version will have - * lower overheads. - */ - - -/* Bring the software pipe uptodate with current state. - * - * With constant state objects we would probably just send all state - * to both rasterizers all the time??? - */ -void -failover_state_emit( struct failover_context *failover ) -{ - unsigned i; - - if (failover->dirty & FO_NEW_BLEND) - failover->sw->bind_blend_state( failover->sw, - failover->blend->sw_state ); - - if (failover->dirty & FO_NEW_BLEND_COLOR) - failover->sw->set_blend_color( failover->sw, &failover->blend_color ); - - if (failover->dirty & FO_NEW_CLIP) - failover->sw->set_clip_state( failover->sw, &failover->clip ); - - if (failover->dirty & FO_NEW_DEPTH_STENCIL) - failover->sw->bind_depth_stencil_alpha_state( failover->sw, - failover->depth_stencil->sw_state ); - - if (failover->dirty & FO_NEW_FRAMEBUFFER) - failover->sw->set_framebuffer_state( failover->sw, &failover->framebuffer ); - - if (failover->dirty & FO_NEW_FRAGMENT_SHADER) - failover->sw->bind_fs_state( failover->sw, - failover->fragment_shader->sw_state ); - - if (failover->dirty & FO_NEW_VERTEX_SHADER) - failover->sw->bind_vs_state( failover->sw, - failover->vertex_shader->sw_state ); - - if (failover->dirty & FO_NEW_STIPPLE) - failover->sw->set_polygon_stipple( failover->sw, &failover->poly_stipple ); - - if (failover->dirty & FO_NEW_RASTERIZER) - failover->sw->bind_rasterizer_state( failover->sw, - failover->rasterizer->sw_state ); - - if (failover->dirty & FO_NEW_SCISSOR) - failover->sw->set_scissor_state( failover->sw, &failover->scissor ); - - if (failover->dirty & FO_NEW_VIEWPORT) - failover->sw->set_viewport_state( failover->sw, &failover->viewport ); - - if (failover->dirty & FO_NEW_SAMPLER) { - for (i = 0; i < PIPE_MAX_SAMPLERS; i++) { - if (failover->dirty_sampler & (1<<i)) { - failover->sw->bind_sampler_state( failover->sw, i, - failover->sampler[i]->sw_state ); - } - } - } - - if (failover->dirty & FO_NEW_TEXTURE) { - for (i = 0; i < PIPE_MAX_SAMPLERS; i++) { - if (failover->dirty_texture & (1<<i)) { - failover->sw->set_sampler_texture( failover->sw, i, - failover->texture[i] ); - } - } - } - - if (failover->dirty & FO_NEW_VERTEX_BUFFER) { - for (i = 0; i < PIPE_ATTRIB_MAX; i++) { - if (failover->dirty_vertex_buffer & (1<<i)) { - failover->sw->set_vertex_buffer( failover->sw, i, - &failover->vertex_buffer[i] ); - } - } - } - - if (failover->dirty & FO_NEW_VERTEX_ELEMENT) { - for (i = 0; i < PIPE_ATTRIB_MAX; i++) { - if (failover->dirty_vertex_element & (1<<i)) { - failover->sw->set_vertex_element( failover->sw, i, - &failover->vertex_element[i] ); - } - } - } - - failover->dirty = 0; - failover->dirty_vertex_element = 0; - failover->dirty_vertex_buffer = 0; - failover->dirty_texture = 0; - failover->dirty_sampler = 0; -} diff --git a/src/mesa/pipe/failover/fo_winsys.h b/src/mesa/pipe/failover/fo_winsys.h deleted file mode 100644 index a8ce997a1f..0000000000 --- a/src/mesa/pipe/failover/fo_winsys.h +++ /dev/null @@ -1,45 +0,0 @@ -/************************************************************************** - * - * Copyright 2007 Tungsten Graphics, Inc., Cedar Park, Texas. - * 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, sub license, 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 (including the - * next paragraph) 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 NON-INFRINGEMENT. - * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS 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 FO_WINSYS_H -#define FO_WINSYS_H - - -/* This is the interface that failover requires any window system - * hosting it to implement. This is the only include file in failover - * which is public. - */ - - -struct pipe_context; - - -struct pipe_context *failover_create( struct pipe_context *hw, - struct pipe_context *sw ); - - -#endif /* FO_WINSYS_H */ |