diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/gallium/drivers/galahad/Makefile.am | 16 | ||||
-rw-r--r-- | src/gallium/drivers/galahad/Makefile.sources | 8 | ||||
-rw-r--r-- | src/gallium/drivers/galahad/SConscript | 12 | ||||
-rw-r--r-- | src/gallium/drivers/galahad/glhd_context.c | 1056 | ||||
-rw-r--r-- | src/gallium/drivers/galahad/glhd_context.h | 69 | ||||
-rw-r--r-- | src/gallium/drivers/galahad/glhd_objects.c | 186 | ||||
-rw-r--r-- | src/gallium/drivers/galahad/glhd_objects.h | 179 | ||||
-rw-r--r-- | src/gallium/drivers/galahad/glhd_public.h | 37 | ||||
-rw-r--r-- | src/gallium/drivers/galahad/glhd_screen.c | 387 | ||||
-rw-r--r-- | src/gallium/drivers/galahad/glhd_screen.h | 48 |
10 files changed, 0 insertions, 1998 deletions
diff --git a/src/gallium/drivers/galahad/Makefile.am b/src/gallium/drivers/galahad/Makefile.am deleted file mode 100644 index 476e73f90db..00000000000 --- a/src/gallium/drivers/galahad/Makefile.am +++ /dev/null @@ -1,16 +0,0 @@ -################################################################################ - -# Meta-driver which combines whichever software rasterizers have been -# built into a single convenience library. - -include Makefile.sources -include $(top_srcdir)/src/gallium/Automake.inc - -AM_CFLAGS = \ - $(GALLIUM_DRIVER_CFLAGS) - -noinst_LTLIBRARIES = libgalahad.la - -libgalahad_la_SOURCES = $(C_SOURCES) - -EXTRA_DIST = SConscript diff --git a/src/gallium/drivers/galahad/Makefile.sources b/src/gallium/drivers/galahad/Makefile.sources deleted file mode 100644 index 95305f6de55..00000000000 --- a/src/gallium/drivers/galahad/Makefile.sources +++ /dev/null @@ -1,8 +0,0 @@ -C_SOURCES := \ - glhd_context.c \ - glhd_context.h \ - glhd_objects.c \ - glhd_objects.h \ - glhd_public.h \ - glhd_screen.c \ - glhd_screen.h diff --git a/src/gallium/drivers/galahad/SConscript b/src/gallium/drivers/galahad/SConscript deleted file mode 100644 index b1d31e4b481..00000000000 --- a/src/gallium/drivers/galahad/SConscript +++ /dev/null @@ -1,12 +0,0 @@ -Import('*') - -env = env.Clone() - -galahad = env.ConvenienceLibrary( - target = 'galahad', - source = env.ParseSourceList('Makefile.sources', 'C_SOURCES') - ) - -env.Alias('galahad', galahad) - -Export('galahad') diff --git a/src/gallium/drivers/galahad/glhd_context.c b/src/gallium/drivers/galahad/glhd_context.c deleted file mode 100644 index 37ea1703fb9..00000000000 --- a/src/gallium/drivers/galahad/glhd_context.c +++ /dev/null @@ -1,1056 +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, 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 VMWARE 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_context.h" - -#include "util/u_format.h" -#include "util/u_memory.h" -#include "util/u_inlines.h" - -#include "glhd_context.h" -#include "glhd_objects.h" - - -static void -galahad_context_destroy(struct pipe_context *_pipe) -{ - struct galahad_context *glhd_pipe = galahad_context(_pipe); - struct pipe_context *pipe = glhd_pipe->pipe; - - pipe->destroy(pipe); - - FREE(glhd_pipe); -} - -static void -galahad_context_draw_vbo(struct pipe_context *_pipe, - const struct pipe_draw_info *info) -{ - struct galahad_context *glhd_pipe = galahad_context(_pipe); - struct pipe_context *pipe = glhd_pipe->pipe; - - /* XXX we should check that all bound resources are unmapped - * before drawing. - */ - - if (info->indirect) { - struct pipe_draw_info info_unwrapped = *info; - info_unwrapped.indirect = galahad_resource_unwrap(info->indirect); - pipe->draw_vbo(pipe, &info_unwrapped); - } - else { - pipe->draw_vbo(pipe, info); - } -} - -static struct pipe_query * -galahad_context_create_query(struct pipe_context *_pipe, - unsigned query_type, - unsigned index) -{ - struct galahad_context *glhd_pipe = galahad_context(_pipe); - struct pipe_context *pipe = glhd_pipe->pipe; - - if (query_type == PIPE_QUERY_OCCLUSION_COUNTER && - !pipe->screen->get_param(pipe->screen, PIPE_CAP_OCCLUSION_QUERY)) { - glhd_error("Occlusion query requested but not supported"); - } - - if (query_type == PIPE_QUERY_TIME_ELAPSED && - !pipe->screen->get_param(pipe->screen, PIPE_CAP_QUERY_TIME_ELAPSED)) { - glhd_error("Timer query requested but not supported"); - } - - return pipe->create_query(pipe, - query_type, - index); -} - -static void -galahad_context_destroy_query(struct pipe_context *_pipe, - struct pipe_query *query) -{ - struct galahad_context *glhd_pipe = galahad_context(_pipe); - struct pipe_context *pipe = glhd_pipe->pipe; - - pipe->destroy_query(pipe, - query); -} - -static void -galahad_context_begin_query(struct pipe_context *_pipe, - struct pipe_query *query) -{ - struct galahad_context *glhd_pipe = galahad_context(_pipe); - struct pipe_context *pipe = glhd_pipe->pipe; - - pipe->begin_query(pipe, - query); -} - -static void -galahad_context_end_query(struct pipe_context *_pipe, - struct pipe_query *query) -{ - struct galahad_context *glhd_pipe = galahad_context(_pipe); - struct pipe_context *pipe = glhd_pipe->pipe; - - pipe->end_query(pipe, - query); -} - -static boolean -galahad_context_get_query_result(struct pipe_context *_pipe, - struct pipe_query *query, - boolean wait, - union pipe_query_result *result) -{ - struct galahad_context *glhd_pipe = galahad_context(_pipe); - struct pipe_context *pipe = glhd_pipe->pipe; - - return pipe->get_query_result(pipe, - query, - wait, - result); -} - -static void * -galahad_context_create_blend_state(struct pipe_context *_pipe, - const struct pipe_blend_state *blend) -{ - struct galahad_context *glhd_pipe = galahad_context(_pipe); - struct pipe_context *pipe = glhd_pipe->pipe; - - if (blend->logicop_enable) { - if (blend->rt[0].blend_enable) { - glhd_warn("Blending enabled for render target 0, but logicops " - "are enabled"); - } - } - - return pipe->create_blend_state(pipe, - blend); -} - -static void -galahad_context_bind_blend_state(struct pipe_context *_pipe, - void *blend) -{ - struct galahad_context *glhd_pipe = galahad_context(_pipe); - struct pipe_context *pipe = glhd_pipe->pipe; - - pipe->bind_blend_state(pipe, - blend); -} - -static void -galahad_context_delete_blend_state(struct pipe_context *_pipe, - void *blend) -{ - struct galahad_context *glhd_pipe = galahad_context(_pipe); - struct pipe_context *pipe = glhd_pipe->pipe; - - pipe->delete_blend_state(pipe, - blend); -} - -static void * -galahad_context_create_sampler_state(struct pipe_context *_pipe, - const struct pipe_sampler_state *sampler) -{ - struct galahad_context *glhd_pipe = galahad_context(_pipe); - struct pipe_context *pipe = glhd_pipe->pipe; - - return pipe->create_sampler_state(pipe, - sampler); -} - -static void -galahad_context_bind_sampler_states(struct pipe_context *_pipe, - unsigned shader, - unsigned start, - unsigned num_samplers, - void **samplers) -{ - struct galahad_context *glhd_pipe = galahad_context(_pipe); - struct pipe_context *pipe = glhd_pipe->pipe; - - if (num_samplers > PIPE_MAX_SAMPLERS) { - glhd_error("%u samplers requested, " - "but only %u are permitted by API", - num_samplers, PIPE_MAX_SAMPLERS); - } - - pipe->bind_sampler_states(pipe, shader, start, num_samplers, samplers); -} - -static void -galahad_context_delete_sampler_state(struct pipe_context *_pipe, - void *sampler) -{ - struct galahad_context *glhd_pipe = galahad_context(_pipe); - struct pipe_context *pipe = glhd_pipe->pipe; - - pipe->delete_sampler_state(pipe, - sampler); -} - -static void * -galahad_context_create_rasterizer_state(struct pipe_context *_pipe, - const struct pipe_rasterizer_state *rasterizer) -{ - struct galahad_context *glhd_pipe = galahad_context(_pipe); - struct pipe_context *pipe = glhd_pipe->pipe; - - if (rasterizer->point_quad_rasterization) { - if (rasterizer->point_smooth) { - glhd_warn("Point smoothing requested but ignored"); - } - } else { - if (rasterizer->sprite_coord_enable) { - glhd_warn("Point sprites requested but ignored"); - } - } - - return pipe->create_rasterizer_state(pipe, - rasterizer); -} - -static void -galahad_context_bind_rasterizer_state(struct pipe_context *_pipe, - void *rasterizer) -{ - struct galahad_context *glhd_pipe = galahad_context(_pipe); - struct pipe_context *pipe = glhd_pipe->pipe; - - pipe->bind_rasterizer_state(pipe, - rasterizer); -} - -static void -galahad_context_delete_rasterizer_state(struct pipe_context *_pipe, - void *rasterizer) -{ - struct galahad_context *glhd_pipe = galahad_context(_pipe); - struct pipe_context *pipe = glhd_pipe->pipe; - - pipe->delete_rasterizer_state(pipe, - rasterizer); -} - -static void * -galahad_context_create_depth_stencil_alpha_state(struct pipe_context *_pipe, - const struct pipe_depth_stencil_alpha_state *depth_stencil_alpha) -{ - struct galahad_context *glhd_pipe = galahad_context(_pipe); - struct pipe_context *pipe = glhd_pipe->pipe; - - return pipe->create_depth_stencil_alpha_state(pipe, - depth_stencil_alpha); -} - -static void -galahad_context_bind_depth_stencil_alpha_state(struct pipe_context *_pipe, - void *depth_stencil_alpha) -{ - struct galahad_context *glhd_pipe = galahad_context(_pipe); - struct pipe_context *pipe = glhd_pipe->pipe; - - pipe->bind_depth_stencil_alpha_state(pipe, - depth_stencil_alpha); -} - -static void -galahad_context_delete_depth_stencil_alpha_state(struct pipe_context *_pipe, - void *depth_stencil_alpha) -{ - struct galahad_context *glhd_pipe = galahad_context(_pipe); - struct pipe_context *pipe = glhd_pipe->pipe; - - pipe->delete_depth_stencil_alpha_state(pipe, - depth_stencil_alpha); -} - -#define GLHD_SHADER_STATE(shader_type) \ - static void * \ - galahad_context_create_##shader_type##_state(struct pipe_context *_pipe, \ - const struct pipe_shader_state *state) \ - { \ - struct galahad_context *glhd_pipe = galahad_context(_pipe); \ - struct pipe_context *pipe = glhd_pipe->pipe; \ - return pipe->create_##shader_type##_state(pipe, state); \ - } \ - \ - static void \ - galahad_context_bind_##shader_type##_state(struct pipe_context *_pipe, \ - void *state) \ - { \ - struct galahad_context *glhd_pipe = galahad_context(_pipe); \ - struct pipe_context *pipe = glhd_pipe->pipe; \ - pipe->bind_##shader_type##_state(pipe, state); \ - } \ - \ - static void \ - galahad_context_delete_##shader_type##_state(struct pipe_context *_pipe, \ - void *state) \ - { \ - struct galahad_context *glhd_pipe = galahad_context(_pipe); \ - struct pipe_context *pipe = glhd_pipe->pipe; \ - pipe->delete_##shader_type##_state(pipe, state); \ - } - -GLHD_SHADER_STATE(fs) -GLHD_SHADER_STATE(vs) -GLHD_SHADER_STATE(gs) - -#undef GLHD_SHADER_STATE - -static void * -galahad_context_create_vertex_elements_state(struct pipe_context *_pipe, - unsigned num_elements, - const struct pipe_vertex_element *vertex_elements) -{ - struct galahad_context *glhd_pipe = galahad_context(_pipe); - struct pipe_context *pipe = glhd_pipe->pipe; - - /* XXX check if stride lines up with element size, at least for floats */ - - return pipe->create_vertex_elements_state(pipe, - num_elements, - vertex_elements); -} - -static void -galahad_context_bind_vertex_elements_state(struct pipe_context *_pipe, - void *velems) -{ - struct galahad_context *glhd_pipe = galahad_context(_pipe); - struct pipe_context *pipe = glhd_pipe->pipe; - - pipe->bind_vertex_elements_state(pipe, - velems); -} - -static void -galahad_context_delete_vertex_elements_state(struct pipe_context *_pipe, - void *velems) -{ - struct galahad_context *glhd_pipe = galahad_context(_pipe); - struct pipe_context *pipe = glhd_pipe->pipe; - - pipe->delete_vertex_elements_state(pipe, - velems); -} - -static void -galahad_context_set_blend_color(struct pipe_context *_pipe, - const struct pipe_blend_color *blend_color) -{ - struct galahad_context *glhd_pipe = galahad_context(_pipe); - struct pipe_context *pipe = glhd_pipe->pipe; - - pipe->set_blend_color(pipe, - blend_color); -} - -static void -galahad_context_set_stencil_ref(struct pipe_context *_pipe, - const struct pipe_stencil_ref *stencil_ref) -{ - struct galahad_context *glhd_pipe = galahad_context(_pipe); - struct pipe_context *pipe = glhd_pipe->pipe; - - pipe->set_stencil_ref(pipe, - stencil_ref); -} - -static void -galahad_context_set_clip_state(struct pipe_context *_pipe, - const struct pipe_clip_state *clip) -{ - struct galahad_context *glhd_pipe = galahad_context(_pipe); - struct pipe_context *pipe = glhd_pipe->pipe; - - pipe->set_clip_state(pipe, - clip); -} - -static void -galahad_context_set_sample_mask(struct pipe_context *_pipe, - unsigned sample_mask) -{ - struct galahad_context *glhd_pipe = galahad_context(_pipe); - struct pipe_context *pipe = glhd_pipe->pipe; - - pipe->set_sample_mask(pipe, - sample_mask); -} - -static void -galahad_context_set_constant_buffer(struct pipe_context *_pipe, - uint shader, - uint index, - struct pipe_constant_buffer *_cb) -{ - struct galahad_context *glhd_pipe = galahad_context(_pipe); - struct pipe_context *pipe = glhd_pipe->pipe; - struct pipe_constant_buffer cb; - - if (shader >= PIPE_SHADER_TYPES) { - glhd_error("Unknown shader type %u", shader); - } - - if (index && - index >= - pipe->screen->get_shader_param(pipe->screen, shader, PIPE_SHADER_CAP_MAX_CONST_BUFFERS)) { - glhd_error("Access to constant buffer %u requested, " - "but only %d are supported", - index, - pipe->screen->get_shader_param(pipe->screen, shader, PIPE_SHADER_CAP_MAX_CONST_BUFFERS)); - } - - /* XXX hmm? unwrap the input state */ - if (_cb) { - cb = *_cb; - cb.buffer = galahad_resource_unwrap(_cb->buffer); - } - - pipe->set_constant_buffer(pipe, - shader, - index, - _cb ? &cb : NULL); -} - -static void -galahad_context_set_framebuffer_state(struct pipe_context *_pipe, - const struct pipe_framebuffer_state *_state) -{ - struct galahad_context *glhd_pipe = galahad_context(_pipe); - struct pipe_context *pipe = glhd_pipe->pipe; - struct pipe_framebuffer_state unwrapped_state; - struct pipe_framebuffer_state *state = NULL; - unsigned i; - - if (_state->nr_cbufs > PIPE_MAX_COLOR_BUFS) { - glhd_error("%d render targets bound, but only %d are permitted by API", - _state->nr_cbufs, PIPE_MAX_COLOR_BUFS); - } else if (_state->nr_cbufs > - pipe->screen->get_param(pipe->screen, PIPE_CAP_MAX_RENDER_TARGETS)) { - glhd_warn("%d render targets bound, but only %d are supported", - _state->nr_cbufs, - pipe->screen->get_param(pipe->screen, PIPE_CAP_MAX_RENDER_TARGETS)); - } - - /* unwrap the input state */ - if (_state) { - memcpy(&unwrapped_state, _state, sizeof(unwrapped_state)); - for(i = 0; i < _state->nr_cbufs; i++) - unwrapped_state.cbufs[i] = galahad_surface_unwrap(_state->cbufs[i]); - for (; i < PIPE_MAX_COLOR_BUFS; i++) - unwrapped_state.cbufs[i] = NULL; - unwrapped_state.zsbuf = galahad_surface_unwrap(_state->zsbuf); - state = &unwrapped_state; - } - - pipe->set_framebuffer_state(pipe, - state); -} - -static void -galahad_context_set_polygon_stipple(struct pipe_context *_pipe, - const struct pipe_poly_stipple *poly_stipple) -{ - struct galahad_context *glhd_pipe = galahad_context(_pipe); - struct pipe_context *pipe = glhd_pipe->pipe; - - pipe->set_polygon_stipple(pipe, - poly_stipple); -} - -static void -galahad_context_set_scissor_states(struct pipe_context *_pipe, - unsigned start_slot, - unsigned num_scissors, - const struct pipe_scissor_state *scissor) -{ - struct galahad_context *glhd_pipe = galahad_context(_pipe); - struct pipe_context *pipe = glhd_pipe->pipe; - - pipe->set_scissor_states(pipe, start_slot, num_scissors, - scissor); -} - -static void -galahad_context_set_viewport_states(struct pipe_context *_pipe, - unsigned start_slot, - unsigned num_viewports, - const struct pipe_viewport_state *viewport) -{ - struct galahad_context *glhd_pipe = galahad_context(_pipe); - struct pipe_context *pipe = glhd_pipe->pipe; - - pipe->set_viewport_states(pipe, start_slot, num_viewports, - viewport); -} - -static void -galahad_context_set_sampler_views(struct pipe_context *_pipe, - unsigned shader, - unsigned start, - unsigned num, - struct pipe_sampler_view **_views) -{ - struct galahad_context *glhd_pipe = galahad_context(_pipe); - struct pipe_context *pipe = glhd_pipe->pipe; - struct pipe_sampler_view *unwrapped_views[PIPE_MAX_SHADER_SAMPLER_VIEWS]; - unsigned i; - - for (i = 0; i < num; i++) - unwrapped_views[i] = galahad_sampler_view_unwrap(_views[i]); - - pipe->set_sampler_views(pipe, shader, start, num, unwrapped_views); -} - -static void -galahad_context_set_vertex_buffers(struct pipe_context *_pipe, - unsigned start_slot, unsigned num_buffers, - const struct pipe_vertex_buffer *_buffers) -{ - struct galahad_context *glhd_pipe = galahad_context(_pipe); - struct pipe_context *pipe = glhd_pipe->pipe; - struct pipe_vertex_buffer unwrapped_buffers[PIPE_MAX_SHADER_INPUTS]; - struct pipe_vertex_buffer *buffers = NULL; - unsigned i; - - if (num_buffers && _buffers) { - memcpy(unwrapped_buffers, _buffers, num_buffers * sizeof(*_buffers)); - for (i = 0; i < num_buffers; i++) - unwrapped_buffers[i].buffer = galahad_resource_unwrap(_buffers[i].buffer); - buffers = unwrapped_buffers; - } - - pipe->set_vertex_buffers(pipe, - start_slot, num_buffers, - buffers); -} - -static void -galahad_context_set_index_buffer(struct pipe_context *_pipe, - const struct pipe_index_buffer *_ib) -{ - struct galahad_context *glhd_pipe = galahad_context(_pipe); - struct pipe_context *pipe = glhd_pipe->pipe; - struct pipe_index_buffer unwrapped_ib, *ib = NULL; - - if (_ib) { - if (_ib->buffer || _ib->user_buffer) { - switch (_ib->index_size) { - case 1: - case 2: - case 4: - break; - default: - glhd_warn("unrecognized index size %d", _ib->index_size); - break; - } - } - else if (_ib->offset || _ib->index_size) { - glhd_warn("non-indexed state with index offset %d and index size %d", - _ib->offset, _ib->index_size); - } - - unwrapped_ib = *_ib; - unwrapped_ib.buffer = galahad_resource_unwrap(_ib->buffer); - ib = &unwrapped_ib; - } - - pipe->set_index_buffer(pipe, ib); -} - -static INLINE struct pipe_stream_output_target * -galahad_context_create_stream_output_target(struct pipe_context *_pipe, - struct pipe_resource *_res, - unsigned buffer_offset, - unsigned buffer_size) -{ - struct galahad_context *glhd_pipe = galahad_context(_pipe); - struct galahad_resource *glhd_resource_res = galahad_resource(_res); - struct pipe_context *pipe = glhd_pipe->pipe; - struct pipe_resource *res = glhd_resource_res->resource; - - return pipe->create_stream_output_target(pipe, - res, buffer_offset, buffer_size); -} - -static INLINE void -galahad_context_stream_output_target_destroy( - struct pipe_context *_pipe, - struct pipe_stream_output_target *target) -{ - struct galahad_context *glhd_pipe = galahad_context(_pipe); - struct pipe_context *pipe = glhd_pipe->pipe; - - pipe->stream_output_target_destroy(pipe, target); -} - -static INLINE void -galahad_context_set_stream_output_targets(struct pipe_context *_pipe, - unsigned num_targets, - struct pipe_stream_output_target **tgs, - const unsigned *offsets) -{ - struct galahad_context *glhd_pipe = galahad_context(_pipe); - struct pipe_context *pipe = glhd_pipe->pipe; - - pipe->set_stream_output_targets(pipe, num_targets, tgs, offsets); -} - -static void -galahad_context_resource_copy_region(struct pipe_context *_pipe, - struct pipe_resource *_dst, - unsigned dst_level, - unsigned dstx, - unsigned dsty, - unsigned dstz, - struct pipe_resource *_src, - unsigned src_level, - const struct pipe_box *src_box) -{ - struct galahad_context *glhd_pipe = galahad_context(_pipe); - struct galahad_resource *glhd_resource_dst = galahad_resource(_dst); - struct galahad_resource *glhd_resource_src = galahad_resource(_src); - struct pipe_context *pipe = glhd_pipe->pipe; - struct pipe_resource *dst = glhd_resource_dst->resource; - struct pipe_resource *src = glhd_resource_src->resource; - - if (_dst->format != _src->format) { - const struct util_format_description *src_desc = - util_format_description(_src->format); - const struct util_format_description *dst_desc = - util_format_description(_dst->format); - if (!util_is_format_compatible(src_desc, dst_desc)) - glhd_warn("Format mismatch: Source is %s, destination is %s", - src_desc->short_name, - dst_desc->short_name); - } - - if ((_src->target == PIPE_BUFFER && _dst->target != PIPE_BUFFER) || - (_src->target != PIPE_BUFFER && _dst->target == PIPE_BUFFER)) { - glhd_warn("Resource target mismatch: Source is %i, destination is %i", - _src->target, _dst->target); - } - - pipe->resource_copy_region(pipe, - dst, - dst_level, - dstx, - dsty, - dstz, - src, - src_level, - src_box); -} - -static void -galahad_context_blit(struct pipe_context *_pipe, - const struct pipe_blit_info *_info) -{ - struct galahad_context *glhd_pipe = galahad_context(_pipe); - struct pipe_context *pipe = glhd_pipe->pipe; - struct pipe_blit_info info = *_info; - - info.dst.resource = galahad_resource_unwrap(info.dst.resource); - info.src.resource = galahad_resource_unwrap(info.src.resource); - - if (info.dst.box.width < 0 || - info.dst.box.height < 0) - glhd_error("Destination dimensions are negative"); - - if (info.filter != PIPE_TEX_FILTER_NEAREST && - info.src.resource->target != PIPE_TEXTURE_3D && - info.dst.box.depth != info.src.box.depth) - glhd_error("Filtering in z-direction on non-3D texture"); - - if (util_format_is_depth_or_stencil(info.dst.format) != - util_format_is_depth_or_stencil(info.src.format)) - glhd_error("Invalid format conversion: %s <- %s\n", - util_format_name(info.dst.format), - util_format_name(info.src.format)); - - pipe->blit(pipe, &info); -} - -static void -galahad_context_flush_resource(struct pipe_context *_pipe, - struct pipe_resource *_res) -{ - struct galahad_context *glhd_pipe = galahad_context(_pipe); - struct galahad_resource *glhd_resource_res = galahad_resource(_res); - struct pipe_context *pipe = glhd_pipe->pipe; - struct pipe_resource *res = glhd_resource_res->resource; - - pipe->flush_resource(pipe, res); -} - -static void -galahad_context_clear(struct pipe_context *_pipe, - unsigned buffers, - const union pipe_color_union *color, - double depth, - unsigned stencil) -{ - struct galahad_context *glhd_pipe = galahad_context(_pipe); - struct pipe_context *pipe = glhd_pipe->pipe; - - pipe->clear(pipe, - buffers, - color, - depth, - stencil); -} - -static void -galahad_context_clear_render_target(struct pipe_context *_pipe, - struct pipe_surface *_dst, - const union pipe_color_union *color, - unsigned dstx, unsigned dsty, - unsigned width, unsigned height) -{ - struct galahad_context *glhd_pipe = galahad_context(_pipe); - struct galahad_surface *glhd_surface_dst = galahad_surface(_dst); - struct pipe_context *pipe = glhd_pipe->pipe; - struct pipe_surface *dst = glhd_surface_dst->surface; - - pipe->clear_render_target(pipe, - dst, - color, - dstx, - dsty, - width, - height); -} -static void -galahad_context_clear_depth_stencil(struct pipe_context *_pipe, - struct pipe_surface *_dst, - unsigned clear_flags, - double depth, - unsigned stencil, - unsigned dstx, unsigned dsty, - unsigned width, unsigned height) -{ - struct galahad_context *glhd_pipe = galahad_context(_pipe); - struct galahad_surface *glhd_surface_dst = galahad_surface(_dst); - struct pipe_context *pipe = glhd_pipe->pipe; - struct pipe_surface *dst = glhd_surface_dst->surface; - - pipe->clear_depth_stencil(pipe, - dst, - clear_flags, - depth, - stencil, - dstx, - dsty, - width, - height); - -} - -static void -galahad_context_flush(struct pipe_context *_pipe, - struct pipe_fence_handle **fence, - unsigned flags) -{ - struct galahad_context *glhd_pipe = galahad_context(_pipe); - struct pipe_context *pipe = glhd_pipe->pipe; - - pipe->flush(pipe, fence, flags); -} - -static struct pipe_sampler_view * -galahad_context_create_sampler_view(struct pipe_context *_pipe, - struct pipe_resource *_resource, - const struct pipe_sampler_view *templ) -{ - struct galahad_context *glhd_context = galahad_context(_pipe); - struct galahad_resource *glhd_resource = galahad_resource(_resource); - struct pipe_context *pipe = glhd_context->pipe; - struct pipe_resource *resource = glhd_resource->resource; - struct pipe_sampler_view *result; - - result = pipe->create_sampler_view(pipe, - resource, - templ); - - if (result) - return galahad_sampler_view_create(glhd_context, glhd_resource, result); - return NULL; -} - -static void -galahad_context_sampler_view_destroy(struct pipe_context *_pipe, - struct pipe_sampler_view *_view) -{ - galahad_sampler_view_destroy(galahad_context(_pipe), - galahad_sampler_view(_view)); -} - -static struct pipe_surface * -galahad_context_create_surface(struct pipe_context *_pipe, - struct pipe_resource *_resource, - const struct pipe_surface *templ) -{ - struct galahad_context *glhd_context = galahad_context(_pipe); - struct galahad_resource *glhd_resource = galahad_resource(_resource); - struct pipe_context *pipe = glhd_context->pipe; - struct pipe_resource *resource = glhd_resource->resource; - struct pipe_surface *result; - - result = pipe->create_surface(pipe, - resource, - templ); - - if (result) - return galahad_surface_create(glhd_context, glhd_resource, result); - return NULL; -} - -static void -galahad_context_surface_destroy(struct pipe_context *_pipe, - struct pipe_surface *_surface) -{ - galahad_surface_destroy(galahad_context(_pipe), - galahad_surface(_surface)); -} - - -static void * -galahad_context_transfer_map(struct pipe_context *_context, - struct pipe_resource *_resource, - unsigned level, - unsigned usage, - const struct pipe_box *box, - struct pipe_transfer **transfer) -{ - struct galahad_context *glhd_context = galahad_context(_context); - struct galahad_resource *glhd_resource = galahad_resource(_resource); - struct pipe_context *context = glhd_context->pipe; - struct pipe_resource *resource = glhd_resource->resource; - struct pipe_transfer *result; - void *map; - - map = context->transfer_map(context, - resource, - level, - usage, - box, &result); - if (!map) - return NULL; - - glhd_resource->map_count++; - - *transfer = galahad_transfer_create(glhd_context, glhd_resource, result); - return *transfer ? map : NULL; -} - -static void -galahad_context_transfer_flush_region(struct pipe_context *_context, - struct pipe_transfer *_transfer, - const struct pipe_box *box) -{ - struct galahad_context *glhd_context = galahad_context(_context); - struct galahad_transfer *glhd_transfer = galahad_transfer(_transfer); - struct pipe_context *context = glhd_context->pipe; - struct pipe_transfer *transfer = glhd_transfer->transfer; - - context->transfer_flush_region(context, - transfer, - box); -} - -static void -galahad_context_transfer_unmap(struct pipe_context *_context, - struct pipe_transfer *_transfer) -{ - struct galahad_context *glhd_context = galahad_context(_context); - struct galahad_transfer *glhd_transfer = galahad_transfer(_transfer); - struct pipe_context *context = glhd_context->pipe; - struct pipe_transfer *transfer = glhd_transfer->transfer; - struct galahad_resource *glhd_resource = galahad_resource(_transfer->resource); - - if (glhd_resource->map_count < 1) { - glhd_warn("context::transfer_unmap() called too many times" - " (count = %d)\n", glhd_resource->map_count); - } - - glhd_resource->map_count--; - - context->transfer_unmap(context, - transfer); - - galahad_transfer_destroy(galahad_context(_context), - galahad_transfer(_transfer)); -} - - -static void -galahad_context_transfer_inline_write(struct pipe_context *_context, - struct pipe_resource *_resource, - unsigned level, - unsigned usage, - const struct pipe_box *box, - const void *data, - unsigned stride, - unsigned slice_stride) -{ - struct galahad_context *glhd_context = galahad_context(_context); - struct galahad_resource *glhd_resource = galahad_resource(_resource); - struct pipe_context *context = glhd_context->pipe; - struct pipe_resource *resource = glhd_resource->resource; - - context->transfer_inline_write(context, - resource, - level, - usage, - box, - data, - stride, - slice_stride); -} - - -static void -galahad_context_render_condition(struct pipe_context *_context, - struct pipe_query *query, - boolean condition, - uint mode) -{ - struct galahad_context *glhd_context = galahad_context(_context); - struct pipe_context *context = glhd_context->pipe; - - context->render_condition(context, query, condition, mode); -} - - -struct pipe_context * -galahad_context_create(struct pipe_screen *_screen, struct pipe_context *pipe) -{ - struct galahad_context *glhd_pipe; - (void)galahad_screen(_screen); - - glhd_pipe = CALLOC_STRUCT(galahad_context); - if (!glhd_pipe) { - return NULL; - } - - glhd_pipe->base.screen = _screen; - glhd_pipe->base.priv = pipe->priv; /* expose wrapped data */ - glhd_pipe->base.draw = NULL; - - glhd_pipe->base.destroy = galahad_context_destroy; - -#define GLHD_PIPE_INIT(_member) \ - glhd_pipe->base . _member = pipe -> _member ? galahad_context_ ## _member : NULL - - GLHD_PIPE_INIT(draw_vbo); - GLHD_PIPE_INIT(render_condition); - GLHD_PIPE_INIT(create_query); - GLHD_PIPE_INIT(destroy_query); - GLHD_PIPE_INIT(begin_query); - GLHD_PIPE_INIT(end_query); - GLHD_PIPE_INIT(get_query_result); - GLHD_PIPE_INIT(create_blend_state); - GLHD_PIPE_INIT(bind_blend_state); - GLHD_PIPE_INIT(delete_blend_state); - GLHD_PIPE_INIT(create_sampler_state); - GLHD_PIPE_INIT(bind_sampler_states); - GLHD_PIPE_INIT(delete_sampler_state); - GLHD_PIPE_INIT(create_rasterizer_state); - GLHD_PIPE_INIT(bind_rasterizer_state); - GLHD_PIPE_INIT(delete_rasterizer_state); - GLHD_PIPE_INIT(create_depth_stencil_alpha_state); - GLHD_PIPE_INIT(bind_depth_stencil_alpha_state); - GLHD_PIPE_INIT(delete_depth_stencil_alpha_state); - GLHD_PIPE_INIT(create_fs_state); - GLHD_PIPE_INIT(bind_fs_state); - GLHD_PIPE_INIT(delete_fs_state); - GLHD_PIPE_INIT(create_vs_state); - GLHD_PIPE_INIT(bind_vs_state); - GLHD_PIPE_INIT(delete_vs_state); - GLHD_PIPE_INIT(create_gs_state); - GLHD_PIPE_INIT(bind_gs_state); - GLHD_PIPE_INIT(delete_gs_state); - GLHD_PIPE_INIT(create_vertex_elements_state); - GLHD_PIPE_INIT(bind_vertex_elements_state); - GLHD_PIPE_INIT(delete_vertex_elements_state); - GLHD_PIPE_INIT(set_blend_color); - GLHD_PIPE_INIT(set_stencil_ref); - GLHD_PIPE_INIT(set_sample_mask); - GLHD_PIPE_INIT(set_clip_state); - GLHD_PIPE_INIT(set_constant_buffer); - GLHD_PIPE_INIT(set_framebuffer_state); - GLHD_PIPE_INIT(set_polygon_stipple); - GLHD_PIPE_INIT(set_scissor_states); - GLHD_PIPE_INIT(set_viewport_states); - GLHD_PIPE_INIT(set_sampler_views); - //GLHD_PIPE_INIT(set_shader_resources); - GLHD_PIPE_INIT(set_vertex_buffers); - GLHD_PIPE_INIT(set_index_buffer); - GLHD_PIPE_INIT(create_stream_output_target); - GLHD_PIPE_INIT(stream_output_target_destroy); - GLHD_PIPE_INIT(set_stream_output_targets); - GLHD_PIPE_INIT(resource_copy_region); - GLHD_PIPE_INIT(blit); - GLHD_PIPE_INIT(flush_resource); - GLHD_PIPE_INIT(clear); - GLHD_PIPE_INIT(clear_render_target); - GLHD_PIPE_INIT(clear_depth_stencil); - GLHD_PIPE_INIT(flush); - GLHD_PIPE_INIT(create_sampler_view); - GLHD_PIPE_INIT(sampler_view_destroy); - GLHD_PIPE_INIT(create_surface); - GLHD_PIPE_INIT(surface_destroy); - GLHD_PIPE_INIT(transfer_map); - GLHD_PIPE_INIT(transfer_flush_region); - GLHD_PIPE_INIT(transfer_unmap); - GLHD_PIPE_INIT(transfer_inline_write); - //GLHD_PIPE_INIT(texture_barrier); - //GLHD_PIPE_INIT(create_video_decoder); - //GLHD_PIPE_INIT(create_video_buffer); - //GLHD_PIPE_INIT(create_compute_state); - //GLHD_PIPE_INIT(bind_compute_state); - //GLHD_PIPE_INIT(delete_compute_state); - //GLHD_PIPE_INIT(set_compute_resources); - //GLHD_PIPE_INIT(set_global_binding); - //GLHD_PIPE_INIT(launch_grid); - -#undef GLHD_PIPE_INIT - - glhd_pipe->pipe = pipe; - - return &glhd_pipe->base; -} diff --git a/src/gallium/drivers/galahad/glhd_context.h b/src/gallium/drivers/galahad/glhd_context.h deleted file mode 100644 index 53d450fd742..00000000000 --- a/src/gallium/drivers/galahad/glhd_context.h +++ /dev/null @@ -1,69 +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, 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 VMWARE 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 GLHD_CONTEXT_H -#define GLHD_CONTEXT_H - -#include <stdio.h> - -#include "pipe/p_state.h" -#include "pipe/p_context.h" - -#include "util/u_debug.h" - - -struct galahad_context { - struct pipe_context base; /**< base class */ - - struct pipe_context *pipe; -}; - - -struct pipe_context * -galahad_context_create(struct pipe_screen *screen, struct pipe_context *pipe); - - -static INLINE struct galahad_context * -galahad_context(struct pipe_context *pipe) -{ - return (struct galahad_context *)pipe; -} - -#define glhd_warn(...) \ -do { \ - debug_printf("galahad: %s: ", __FUNCTION__); \ - debug_printf(__VA_ARGS__); \ - debug_printf("\n"); \ -} while (0) - -#define glhd_check(fmt, value, expr) \ - ((value expr) ? (void)0 : debug_printf("galahad: %s:%u: Expected `%s %s`, got %s == " fmt "\n", __FUNCTION__, __LINE__, #value, #expr, #value, value)) - -#define glhd_error(...) \ - glhd_warn(__VA_ARGS__); - -#endif /* GLHD_CONTEXT_H */ diff --git a/src/gallium/drivers/galahad/glhd_objects.c b/src/gallium/drivers/galahad/glhd_objects.c deleted file mode 100644 index e4a8f28f352..00000000000 --- a/src/gallium/drivers/galahad/glhd_objects.c +++ /dev/null @@ -1,186 +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, 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 VMWARE 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 "util/u_inlines.h" -#include "util/u_memory.h" - -#include "glhd_screen.h" -#include "glhd_objects.h" -#include "glhd_context.h" - - - -struct pipe_resource * -galahad_resource_create(struct galahad_screen *glhd_screen, - struct pipe_resource *resource) -{ - struct galahad_resource *glhd_resource; - - if(!resource) - goto error; - - assert(resource->screen == glhd_screen->screen); - - glhd_resource = CALLOC_STRUCT(galahad_resource); - if(!glhd_resource) - goto error; - - memcpy(&glhd_resource->base, resource, sizeof(struct pipe_resource)); - - pipe_reference_init(&glhd_resource->base.reference, 1); - glhd_resource->base.screen = &glhd_screen->base; - glhd_resource->resource = resource; - - return &glhd_resource->base; - -error: - pipe_resource_reference(&resource, NULL); - return NULL; -} - -void -galahad_resource_destroy(struct galahad_resource *glhd_resource) -{ - pipe_resource_reference(&glhd_resource->resource, NULL); - FREE(glhd_resource); -} - - -struct pipe_surface * -galahad_surface_create(struct galahad_context *glhd_context, - struct galahad_resource *glhd_resource, - struct pipe_surface *surface) -{ - struct galahad_surface *glhd_surface; - - if(!surface) - goto error; - - assert(surface->texture == glhd_resource->resource); - - glhd_surface = CALLOC_STRUCT(galahad_surface); - if(!glhd_surface) - goto error; - - memcpy(&glhd_surface->base, surface, sizeof(struct pipe_surface)); - - pipe_reference_init(&glhd_surface->base.reference, 1); - glhd_surface->base.texture = NULL; - pipe_resource_reference(&glhd_surface->base.texture, &glhd_resource->base); - glhd_surface->surface = surface; - - return &glhd_surface->base; - -error: - pipe_surface_reference(&surface, NULL); - return NULL; -} - -void -galahad_surface_destroy(struct galahad_context *glhd_context, - struct galahad_surface *glhd_surface) -{ - pipe_resource_reference(&glhd_surface->base.texture, NULL); - pipe_surface_reference(&glhd_surface->surface, NULL); - FREE(glhd_surface); -} - - -struct pipe_sampler_view * -galahad_sampler_view_create(struct galahad_context *glhd_context, - struct galahad_resource *glhd_resource, - struct pipe_sampler_view *view) -{ - struct galahad_sampler_view *glhd_view; - - if (!view) - goto error; - - assert(view->texture == glhd_resource->resource); - - glhd_view = CALLOC_STRUCT(galahad_sampler_view); - - glhd_view->base = *view; - glhd_view->base.reference.count = 1; - glhd_view->base.texture = NULL; - pipe_resource_reference(&glhd_view->base.texture, &glhd_resource->base); - glhd_view->base.context = &glhd_context->base; - glhd_view->sampler_view = view; - - return &glhd_view->base; -error: - return NULL; -} - -void -galahad_sampler_view_destroy(struct galahad_context *glhd_context, - struct galahad_sampler_view *glhd_view) -{ - pipe_sampler_view_reference(&glhd_view->sampler_view, NULL); - pipe_resource_reference(&glhd_view->base.texture, NULL); - FREE(glhd_view); -} - - -struct pipe_transfer * -galahad_transfer_create(struct galahad_context *glhd_context, - struct galahad_resource *glhd_resource, - struct pipe_transfer *transfer) -{ - struct galahad_transfer *glhd_transfer; - - if(!transfer) - goto error; - - assert(transfer->resource == glhd_resource->resource); - - glhd_transfer = CALLOC_STRUCT(galahad_transfer); - if(!glhd_transfer) - goto error; - - memcpy(&glhd_transfer->base, transfer, sizeof(struct pipe_transfer)); - - glhd_transfer->base.resource = NULL; - glhd_transfer->transfer = transfer; - - pipe_resource_reference(&glhd_transfer->base.resource, &glhd_resource->base); - assert(glhd_transfer->base.resource == &glhd_resource->base); - - return &glhd_transfer->base; - -error: - glhd_context->pipe->transfer_unmap(glhd_context->pipe, transfer); - return NULL; -} - -void -galahad_transfer_destroy(struct galahad_context *glhd_context, - struct galahad_transfer *glhd_transfer) -{ - pipe_resource_reference(&glhd_transfer->base.resource, NULL); - FREE(glhd_transfer); -} diff --git a/src/gallium/drivers/galahad/glhd_objects.h b/src/gallium/drivers/galahad/glhd_objects.h deleted file mode 100644 index 13dc7485887..00000000000 --- a/src/gallium/drivers/galahad/glhd_objects.h +++ /dev/null @@ -1,179 +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, 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 VMWARE 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 GLHD_OBJECTS_H -#define GLHD_OBJECTS_H - - -#include "pipe/p_compiler.h" -#include "pipe/p_state.h" - -#include "glhd_screen.h" - -struct galahad_context; - - -struct galahad_resource -{ - struct pipe_resource base; - - struct pipe_resource *resource; - - int map_count; -}; - - -struct galahad_sampler_view -{ - struct pipe_sampler_view base; - - struct pipe_sampler_view *sampler_view; -}; - - -struct galahad_surface -{ - struct pipe_surface base; - - struct pipe_surface *surface; -}; - - -struct galahad_transfer -{ - struct pipe_transfer base; - - struct pipe_transfer *transfer; -}; - - -static INLINE struct galahad_resource * -galahad_resource(struct pipe_resource *_resource) -{ - if(!_resource) - return NULL; - (void)galahad_screen(_resource->screen); - return (struct galahad_resource *)_resource; -} - -static INLINE struct galahad_sampler_view * -galahad_sampler_view(struct pipe_sampler_view *_sampler_view) -{ - if (!_sampler_view) { - return NULL; - } - return (struct galahad_sampler_view *)_sampler_view; -} - -static INLINE struct galahad_surface * -galahad_surface(struct pipe_surface *_surface) -{ - if(!_surface) - return NULL; - (void)galahad_resource(_surface->texture); - return (struct galahad_surface *)_surface; -} - -static INLINE struct galahad_transfer * -galahad_transfer(struct pipe_transfer *_transfer) -{ - if(!_transfer) - return NULL; - (void)galahad_resource(_transfer->resource); - return (struct galahad_transfer *)_transfer; -} - -static INLINE struct pipe_resource * -galahad_resource_unwrap(struct pipe_resource *_resource) -{ - if(!_resource) - return NULL; - return galahad_resource(_resource)->resource; -} - -static INLINE struct pipe_sampler_view * -galahad_sampler_view_unwrap(struct pipe_sampler_view *_sampler_view) -{ - if (!_sampler_view) { - return NULL; - } - return galahad_sampler_view(_sampler_view)->sampler_view; -} - -static INLINE struct pipe_surface * -galahad_surface_unwrap(struct pipe_surface *_surface) -{ - if(!_surface) - return NULL; - return galahad_surface(_surface)->surface; -} - -static INLINE struct pipe_transfer * -galahad_transfer_unwrap(struct pipe_transfer *_transfer) -{ - if(!_transfer) - return NULL; - return galahad_transfer(_transfer)->transfer; -} - - -struct pipe_resource * -galahad_resource_create(struct galahad_screen *glhd_screen, - struct pipe_resource *resource); - -void -galahad_resource_destroy(struct galahad_resource *glhd_resource); - -struct pipe_surface * -galahad_surface_create(struct galahad_context *glhd_context, - struct galahad_resource *glhd_resource, - struct pipe_surface *surface); - -void -galahad_surface_destroy(struct galahad_context *glhd_context, - struct galahad_surface *glhd_surface); - -struct pipe_sampler_view * -galahad_sampler_view_create(struct galahad_context *glhd_context, - struct galahad_resource *glhd_resource, - struct pipe_sampler_view *view); - -void -galahad_sampler_view_destroy(struct galahad_context *glhd_context, - struct galahad_sampler_view *glhd_sampler_view); - -struct pipe_transfer * -galahad_transfer_create(struct galahad_context *glhd_context, - struct galahad_resource *glhd_resource, - struct pipe_transfer *transfer); - -void -galahad_transfer_destroy(struct galahad_context *glhd_context, - struct galahad_transfer *glhd_transfer); - - -#endif /* GLHD_OBJECTS_H */ diff --git a/src/gallium/drivers/galahad/glhd_public.h b/src/gallium/drivers/galahad/glhd_public.h deleted file mode 100644 index 77a380196a1..00000000000 --- a/src/gallium/drivers/galahad/glhd_public.h +++ /dev/null @@ -1,37 +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, 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 VMWARE 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 GLHD_PUBLIC_H -#define GLHD_PUBLIC_H - -struct pipe_screen; -struct pipe_context; - -struct pipe_screen * -galahad_screen_create(struct pipe_screen *screen); - -#endif /* GLHD_PUBLIC_H */ diff --git a/src/gallium/drivers/galahad/glhd_screen.c b/src/gallium/drivers/galahad/glhd_screen.c deleted file mode 100644 index 11ab1a9ae55..00000000000 --- a/src/gallium/drivers/galahad/glhd_screen.c +++ /dev/null @@ -1,387 +0,0 @@ -/************************************************************************** - * - * Copyright 2009 VMware, Inc. - * 2010 Corbin Simpson <[email protected]> - * 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 VMWARE 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_screen.h" -#include "pipe/p_state.h" -#include "util/u_memory.h" -#include "util/u_math.h" -#include "util/u_format.h" - -#include "glhd_public.h" -#include "glhd_screen.h" -#include "glhd_context.h" -#include "glhd_objects.h" - -DEBUG_GET_ONCE_BOOL_OPTION(galahad, "GALLIUM_GALAHAD", FALSE) - -static void -galahad_screen_destroy(struct pipe_screen *_screen) -{ - struct galahad_screen *glhd_screen = galahad_screen(_screen); - struct pipe_screen *screen = glhd_screen->screen; - - screen->destroy(screen); - - FREE(glhd_screen); -} - -static const char * -galahad_screen_get_name(struct pipe_screen *_screen) -{ - struct galahad_screen *glhd_screen = galahad_screen(_screen); - struct pipe_screen *screen = glhd_screen->screen; - - return screen->get_name(screen); -} - -static const char * -galahad_screen_get_vendor(struct pipe_screen *_screen) -{ - struct galahad_screen *glhd_screen = galahad_screen(_screen); - struct pipe_screen *screen = glhd_screen->screen; - - return screen->get_vendor(screen); -} - -static int -galahad_screen_get_param(struct pipe_screen *_screen, - enum pipe_cap param) -{ - struct galahad_screen *glhd_screen = galahad_screen(_screen); - struct pipe_screen *screen = glhd_screen->screen; - - return screen->get_param(screen, - param); -} - -static int -galahad_screen_get_shader_param(struct pipe_screen *_screen, - unsigned shader, enum pipe_shader_cap param) -{ - struct galahad_screen *glhd_screen = galahad_screen(_screen); - struct pipe_screen *screen = glhd_screen->screen; - - return screen->get_shader_param(screen, shader, - param); -} - -static float -galahad_screen_get_paramf(struct pipe_screen *_screen, - enum pipe_capf param) -{ - struct galahad_screen *glhd_screen = galahad_screen(_screen); - struct pipe_screen *screen = glhd_screen->screen; - - return screen->get_paramf(screen, - param); -} - -static boolean -galahad_screen_is_format_supported(struct pipe_screen *_screen, - enum pipe_format format, - enum pipe_texture_target target, - unsigned sample_count, - unsigned tex_usage) -{ - struct galahad_screen *glhd_screen = galahad_screen(_screen); - struct pipe_screen *screen = glhd_screen->screen; - - if (target >= PIPE_MAX_TEXTURE_TYPES) { - glhd_warn("Received bogus texture target %d", target); - } - - return screen->is_format_supported(screen, - format, - target, - sample_count, - tex_usage); -} - -static struct pipe_context * -galahad_screen_context_create(struct pipe_screen *_screen, - void *priv) -{ - struct galahad_screen *glhd_screen = galahad_screen(_screen); - struct pipe_screen *screen = glhd_screen->screen; - struct pipe_context *result; - - result = screen->context_create(screen, priv); - if (result) - return galahad_context_create(_screen, result); - return NULL; -} - -static struct pipe_resource * -galahad_screen_resource_create(struct pipe_screen *_screen, - const struct pipe_resource *templat) -{ - struct galahad_screen *glhd_screen = galahad_screen(_screen); - struct pipe_screen *screen = glhd_screen->screen; - struct pipe_resource *result; - - glhd_check("%u", templat->width0, >= 1); - glhd_check("%u", templat->height0, >= 1); - glhd_check("%u", templat->depth0, >= 1); - glhd_check("%u", templat->array_size, >= 1); - - if (templat->target == PIPE_BUFFER) { - glhd_check("%u", templat->last_level, == 0); - glhd_check("%u", templat->height0, == 1); - glhd_check("%u", templat->depth0, == 1); - glhd_check("%u", templat->array_size, == 1); - } else if (templat->target == PIPE_TEXTURE_1D) { - unsigned max_texture_2d_levels = screen->get_param(screen, PIPE_CAP_MAX_TEXTURE_2D_LEVELS); - glhd_check("%u", templat->last_level, < max_texture_2d_levels); - glhd_check("%u", templat->width0, <= (1 << (max_texture_2d_levels - 1))); - glhd_check("%u", templat->height0, == 1); - glhd_check("%u", templat->depth0, == 1); - glhd_check("%u", templat->array_size, == 1); - } else if (templat->target == PIPE_TEXTURE_2D) { - unsigned max_texture_2d_levels = screen->get_param(screen, PIPE_CAP_MAX_TEXTURE_2D_LEVELS); - glhd_check("%u", templat->last_level, < max_texture_2d_levels); - glhd_check("%u", templat->width0, <= (1 << (max_texture_2d_levels - 1))); - glhd_check("%u", templat->height0, <= (1 << (max_texture_2d_levels - 1))); - glhd_check("%u", templat->depth0, == 1); - glhd_check("%u", templat->array_size, == 1); - } else if (templat->target == PIPE_TEXTURE_CUBE) { - unsigned max_texture_cube_levels = screen->get_param(screen, PIPE_CAP_MAX_TEXTURE_CUBE_LEVELS); - glhd_check("%u", templat->last_level, < max_texture_cube_levels); - glhd_check("%u", templat->width0, <= (1 << (max_texture_cube_levels - 1))); - glhd_check("%u", templat->height0, == templat->width0); - glhd_check("%u", templat->depth0, == 1); - glhd_check("%u", templat->array_size, == 6); - } else if (templat->target == PIPE_TEXTURE_CUBE_ARRAY) { - unsigned max_texture_cube_levels = screen->get_param(screen, PIPE_CAP_MAX_TEXTURE_CUBE_LEVELS); - glhd_check("%u", templat->last_level, < max_texture_cube_levels); - glhd_check("%u", templat->width0, <= (1 << (max_texture_cube_levels - 1))); - glhd_check("%u", templat->height0, == templat->width0); - glhd_check("%u", templat->depth0, == 1); - glhd_check("%u", templat->array_size, % 6 == 0); - } else if (templat->target == PIPE_TEXTURE_RECT) { - unsigned max_texture_2d_levels = screen->get_param(screen, PIPE_CAP_MAX_TEXTURE_2D_LEVELS); - glhd_check("%u", templat->last_level, == 0); - glhd_check("%u", templat->width0, <= (1 << (max_texture_2d_levels - 1))); - glhd_check("%u", templat->height0, <= (1 << (max_texture_2d_levels - 1))); - glhd_check("%u", templat->depth0, == 1); - glhd_check("%u", templat->array_size, == 1); - } else if (templat->target == PIPE_TEXTURE_3D) { - unsigned max_texture_3d_levels = screen->get_param(screen, PIPE_CAP_MAX_TEXTURE_3D_LEVELS); - glhd_check("%u", templat->last_level, < max_texture_3d_levels); - glhd_check("%u", templat->width0, <= (1 << (max_texture_3d_levels - 1))); - glhd_check("%u", templat->height0, <= (1 << (max_texture_3d_levels - 1))); - glhd_check("%u", templat->depth0, <= (1 << (max_texture_3d_levels - 1))); - glhd_check("%u", templat->array_size, == 1); - } else if (templat->target == PIPE_TEXTURE_1D_ARRAY) { - unsigned max_texture_2d_levels = screen->get_param(screen, PIPE_CAP_MAX_TEXTURE_2D_LEVELS); - glhd_check("%u", templat->last_level, < max_texture_2d_levels); - glhd_check("%u", templat->width0, <= (1 << (max_texture_2d_levels - 1))); - glhd_check("%u", templat->height0, == 1); - glhd_check("%u", templat->depth0, == 1); - glhd_check("%u", templat->array_size, <= screen->get_param(screen, PIPE_CAP_MAX_TEXTURE_ARRAY_LAYERS)); - } else if (templat->target == PIPE_TEXTURE_2D_ARRAY) { - unsigned max_texture_2d_levels = screen->get_param(screen, PIPE_CAP_MAX_TEXTURE_2D_LEVELS); - glhd_check("%u", templat->last_level, < max_texture_2d_levels); - glhd_check("%u", templat->width0, <= (1 << (max_texture_2d_levels - 1))); - glhd_check("%u", templat->height0, <= (1 << (max_texture_2d_levels - 1))); - glhd_check("%u", templat->depth0, == 1); - glhd_check("%u", templat->array_size, <= screen->get_param(screen, PIPE_CAP_MAX_TEXTURE_ARRAY_LAYERS)); - } else { - glhd_warn("Received bogus resource target %d", templat->target); - } - - if(templat->target != PIPE_TEXTURE_RECT && templat->target != PIPE_BUFFER && !screen->get_param(screen, PIPE_CAP_NPOT_TEXTURES)) - { - if(!util_is_power_of_two(templat->width0) || !util_is_power_of_two(templat->height0)) - glhd_warn("Requested NPOT (%ux%u) non-rectangle texture without NPOT support", templat->width0, templat->height0); - } - - if (templat->target != PIPE_BUFFER && - !screen->is_format_supported(screen, templat->format, templat->target, templat->nr_samples, templat->bind)) { - glhd_warn("Requested format=%s target=%u samples=%u bind=0x%x unsupported", - util_format_name(templat->format), templat->target, templat->nr_samples, templat->bind); - } - - result = screen->resource_create(screen, - templat); - - if (result) - return galahad_resource_create(glhd_screen, result); - return NULL; -} - -static struct pipe_resource * -galahad_screen_resource_from_handle(struct pipe_screen *_screen, - const struct pipe_resource *templ, - struct winsys_handle *handle) -{ - struct galahad_screen *glhd_screen = galahad_screen(_screen); - struct pipe_screen *screen = glhd_screen->screen; - struct pipe_resource *result; - - /* TODO trace call */ - - result = screen->resource_from_handle(screen, templ, handle); - - result = galahad_resource_create(galahad_screen(_screen), result); - - return result; -} - -static boolean -galahad_screen_resource_get_handle(struct pipe_screen *_screen, - struct pipe_resource *_resource, - struct winsys_handle *handle) -{ - struct galahad_screen *glhd_screen = galahad_screen(_screen); - struct galahad_resource *glhd_resource = galahad_resource(_resource); - struct pipe_screen *screen = glhd_screen->screen; - struct pipe_resource *resource = glhd_resource->resource; - - /* TODO trace call */ - - return screen->resource_get_handle(screen, resource, handle); -} - - - -static void -galahad_screen_resource_destroy(struct pipe_screen *screen, - struct pipe_resource *_resource) -{ - galahad_resource_destroy(galahad_resource(_resource)); -} - - -static void -galahad_screen_flush_frontbuffer(struct pipe_screen *_screen, - struct pipe_resource *_resource, - unsigned level, unsigned layer, - void *context_private, - struct pipe_box *sub_box) -{ - struct galahad_screen *glhd_screen = galahad_screen(_screen); - struct galahad_resource *glhd_resource = galahad_resource(_resource); - struct pipe_screen *screen = glhd_screen->screen; - struct pipe_resource *resource = glhd_resource->resource; - - screen->flush_frontbuffer(screen, - resource, - level, layer, - context_private, sub_box); -} - -static void -galahad_screen_fence_reference(struct pipe_screen *_screen, - struct pipe_fence_handle **ptr, - struct pipe_fence_handle *fence) -{ - struct galahad_screen *glhd_screen = galahad_screen(_screen); - struct pipe_screen *screen = glhd_screen->screen; - - screen->fence_reference(screen, - ptr, - fence); -} - -static boolean -galahad_screen_fence_signalled(struct pipe_screen *_screen, - struct pipe_fence_handle *fence) -{ - struct galahad_screen *glhd_screen = galahad_screen(_screen); - struct pipe_screen *screen = glhd_screen->screen; - - return screen->fence_signalled(screen, - fence); -} - -static boolean -galahad_screen_fence_finish(struct pipe_screen *_screen, - struct pipe_fence_handle *fence, - uint64_t timeout) -{ - struct galahad_screen *glhd_screen = galahad_screen(_screen); - struct pipe_screen *screen = glhd_screen->screen; - - return screen->fence_finish(screen, - fence, - timeout); -} - -static uint64_t -galahad_screen_get_timestamp(struct pipe_screen *_screen) -{ - struct galahad_screen *glhd_screen = galahad_screen(_screen); - struct pipe_screen *screen = glhd_screen->screen; - - return screen->get_timestamp(screen); -} - -struct pipe_screen * -galahad_screen_create(struct pipe_screen *screen) -{ - struct galahad_screen *glhd_screen; - - if (!debug_get_option_galahad()) - return screen; - - glhd_screen = CALLOC_STRUCT(galahad_screen); - if (!glhd_screen) { - return screen; - } - -#define GLHD_SCREEN_INIT(_member) \ - glhd_screen->base . _member = screen -> _member ? galahad_screen_ ## _member : NULL - - GLHD_SCREEN_INIT(destroy); - GLHD_SCREEN_INIT(get_name); - GLHD_SCREEN_INIT(get_vendor); - GLHD_SCREEN_INIT(get_param); - GLHD_SCREEN_INIT(get_shader_param); - //GLHD_SCREEN_INIT(get_video_param); - //GLHD_SCREEN_INIT(get_compute_param); - GLHD_SCREEN_INIT(get_paramf); - GLHD_SCREEN_INIT(is_format_supported); - //GLHD_SCREEN_INIT(is_video_format_supported); - GLHD_SCREEN_INIT(context_create); - GLHD_SCREEN_INIT(resource_create); - GLHD_SCREEN_INIT(resource_from_handle); - GLHD_SCREEN_INIT(resource_get_handle); - GLHD_SCREEN_INIT(resource_destroy); - GLHD_SCREEN_INIT(flush_frontbuffer); - GLHD_SCREEN_INIT(fence_reference); - GLHD_SCREEN_INIT(fence_signalled); - GLHD_SCREEN_INIT(fence_finish); - GLHD_SCREEN_INIT(get_timestamp); - -#undef GLHD_SCREEN_INIT - - glhd_screen->screen = screen; - - return &glhd_screen->base; -} diff --git a/src/gallium/drivers/galahad/glhd_screen.h b/src/gallium/drivers/galahad/glhd_screen.h deleted file mode 100644 index 7862f4af2b3..00000000000 --- a/src/gallium/drivers/galahad/glhd_screen.h +++ /dev/null @@ -1,48 +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, 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 VMWARE 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 GLHD_SCREEN_H -#define GLHD_SCREEN_H - -#include "pipe/p_screen.h" -#include "pipe/p_defines.h" - - -struct galahad_screen { - struct pipe_screen base; - - struct pipe_screen *screen; -}; - - -static INLINE struct galahad_screen * -galahad_screen(struct pipe_screen *screen) -{ - return (struct galahad_screen *)screen; -} - -#endif /* GLHD_SCREEN_H */ |