1d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz/************************************************************************** 2d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz * 3d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz * Copyright 2009 VMware, Inc. 4d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz * All Rights Reserved. 5d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz * 6d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz * Permission is hereby granted, free of charge, to any person obtaining a 7d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz * copy of this software and associated documentation files (the 8d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz * "Software"), to deal in the Software without restriction, including 9d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz * without limitation the rights to use, copy, modify, merge, publish, 10d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz * distribute, sub license, and/or sell copies of the Software, and to 11d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz * permit persons to whom the Software is furnished to do so, subject to 12d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz * the following conditions: 13d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz * 14d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz * The above copyright notice and this permission notice (including the 15d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz * next paragraph) shall be included in all copies or substantial portions 16d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz * of the Software. 17d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz * 18d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 19d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 20d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. 21d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz * IN NO EVENT SHALL VMWARE AND/OR ITS SUPPLIERS BE LIABLE FOR 22d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 23d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 24d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 25d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz * 26d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz **************************************************************************/ 27d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 28d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 29d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz#include "pipe/p_context.h" 30d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz#include "util/u_memory.h" 31287c94ea4987033f9c99a2f91c5750c9083504caKeith Whitwell#include "util/u_inlines.h" 32d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 33d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz#include "id_context.h" 34d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz#include "id_objects.h" 35d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 36d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 37d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantzstatic void 38d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantzidentity_destroy(struct pipe_context *_pipe) 39d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz{ 40d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct identity_context *id_pipe = identity_context(_pipe); 41d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct pipe_context *pipe = id_pipe->pipe; 42d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 43d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz pipe->destroy(pipe); 44d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 452ce1d6696b1415fcc340bcf888904e43c2792c68José Fonseca FREE(id_pipe); 46d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz} 47d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 48d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantzstatic void 496d28bf917fb1d741d90fd3f05c22769376021fcaChia-I Wuidentity_draw_vbo(struct pipe_context *_pipe, 506d28bf917fb1d741d90fd3f05c22769376021fcaChia-I Wu const struct pipe_draw_info *info) 516d28bf917fb1d741d90fd3f05c22769376021fcaChia-I Wu{ 526d28bf917fb1d741d90fd3f05c22769376021fcaChia-I Wu struct identity_context *id_pipe = identity_context(_pipe); 536d28bf917fb1d741d90fd3f05c22769376021fcaChia-I Wu struct pipe_context *pipe = id_pipe->pipe; 546d28bf917fb1d741d90fd3f05c22769376021fcaChia-I Wu 556d28bf917fb1d741d90fd3f05c22769376021fcaChia-I Wu pipe->draw_vbo(pipe, info); 566d28bf917fb1d741d90fd3f05c22769376021fcaChia-I Wu} 576d28bf917fb1d741d90fd3f05c22769376021fcaChia-I Wu 58d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantzstatic struct pipe_query * 59d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantzidentity_create_query(struct pipe_context *_pipe, 60d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz unsigned query_type) 61d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz{ 62d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct identity_context *id_pipe = identity_context(_pipe); 63d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct pipe_context *pipe = id_pipe->pipe; 64d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 65d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz return pipe->create_query(pipe, 66d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz query_type); 67d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz} 68d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 69d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantzstatic void 70d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantzidentity_destroy_query(struct pipe_context *_pipe, 71d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct pipe_query *query) 72d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz{ 73d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct identity_context *id_pipe = identity_context(_pipe); 74d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct pipe_context *pipe = id_pipe->pipe; 75d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 76d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz pipe->destroy_query(pipe, 77d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz query); 78d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz} 79d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 80d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantzstatic void 81d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantzidentity_begin_query(struct pipe_context *_pipe, 82d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct pipe_query *query) 83d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz{ 84d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct identity_context *id_pipe = identity_context(_pipe); 85d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct pipe_context *pipe = id_pipe->pipe; 86d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 87d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz pipe->begin_query(pipe, 88d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz query); 89d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz} 90d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 91d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantzstatic void 92d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantzidentity_end_query(struct pipe_context *_pipe, 93d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct pipe_query *query) 94d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz{ 95d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct identity_context *id_pipe = identity_context(_pipe); 96d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct pipe_context *pipe = id_pipe->pipe; 97d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 98d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz pipe->end_query(pipe, 99d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz query); 100d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz} 101d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 102d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantzstatic boolean 103d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantzidentity_get_query_result(struct pipe_context *_pipe, 104d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct pipe_query *query, 105d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz boolean wait, 1064445e170bee23a3607ece0e010adef7058ac6a11Marek Olšák union pipe_query_result *result) 107d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz{ 108d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct identity_context *id_pipe = identity_context(_pipe); 109d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct pipe_context *pipe = id_pipe->pipe; 110d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 111d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz return pipe->get_query_result(pipe, 112d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz query, 113d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz wait, 114d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz result); 115d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz} 116d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 117d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantzstatic void * 118d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantzidentity_create_blend_state(struct pipe_context *_pipe, 119d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz const struct pipe_blend_state *blend) 120d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz{ 121d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct identity_context *id_pipe = identity_context(_pipe); 122d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct pipe_context *pipe = id_pipe->pipe; 123d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 124d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz return pipe->create_blend_state(pipe, 125d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz blend); 126d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz} 127d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 128d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantzstatic void 129d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantzidentity_bind_blend_state(struct pipe_context *_pipe, 130d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz void *blend) 131d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz{ 132d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct identity_context *id_pipe = identity_context(_pipe); 133d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct pipe_context *pipe = id_pipe->pipe; 134d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 135d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz pipe->bind_blend_state(pipe, 136d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz blend); 137d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz} 138d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 139d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantzstatic void 140d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantzidentity_delete_blend_state(struct pipe_context *_pipe, 141d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz void *blend) 142d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz{ 143d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct identity_context *id_pipe = identity_context(_pipe); 144d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct pipe_context *pipe = id_pipe->pipe; 145d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 146d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz pipe->delete_blend_state(pipe, 147d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz blend); 148d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz} 149d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 150d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantzstatic void * 151d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantzidentity_create_sampler_state(struct pipe_context *_pipe, 152d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz const struct pipe_sampler_state *sampler) 153d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz{ 154d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct identity_context *id_pipe = identity_context(_pipe); 155d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct pipe_context *pipe = id_pipe->pipe; 156d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 157d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz return pipe->create_sampler_state(pipe, 158d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz sampler); 159d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz} 160d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 161d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantzstatic void 1620ad95b923a2bfd91677872765946b6a2f8d11260Brian Paulidentity_bind_sampler_states(struct pipe_context *_pipe, 1630ad95b923a2bfd91677872765946b6a2f8d11260Brian Paul unsigned shader, 164d4ab8bd0955f1b114acee80f17a2e82c7129cc1aBrian Paul unsigned start, 1650ad95b923a2bfd91677872765946b6a2f8d11260Brian Paul unsigned num_samplers, 1660ad95b923a2bfd91677872765946b6a2f8d11260Brian Paul void **samplers) 1670ad95b923a2bfd91677872765946b6a2f8d11260Brian Paul{ 1680ad95b923a2bfd91677872765946b6a2f8d11260Brian Paul struct identity_context *id_pipe = identity_context(_pipe); 1690ad95b923a2bfd91677872765946b6a2f8d11260Brian Paul struct pipe_context *pipe = id_pipe->pipe; 1700ad95b923a2bfd91677872765946b6a2f8d11260Brian Paul 171d4ab8bd0955f1b114acee80f17a2e82c7129cc1aBrian Paul /* remove this when we have pipe->bind_sampler_states(..., start, ...) */ 172d4ab8bd0955f1b114acee80f17a2e82c7129cc1aBrian Paul assert(start == 0); 173d4ab8bd0955f1b114acee80f17a2e82c7129cc1aBrian Paul 1740ad95b923a2bfd91677872765946b6a2f8d11260Brian Paul switch (shader) { 1750ad95b923a2bfd91677872765946b6a2f8d11260Brian Paul case PIPE_SHADER_VERTEX: 1760ad95b923a2bfd91677872765946b6a2f8d11260Brian Paul pipe->bind_vertex_sampler_states(pipe, num_samplers, samplers); 1770ad95b923a2bfd91677872765946b6a2f8d11260Brian Paul break; 1780ad95b923a2bfd91677872765946b6a2f8d11260Brian Paul case PIPE_SHADER_GEOMETRY: 1790ad95b923a2bfd91677872765946b6a2f8d11260Brian Paul pipe->bind_geometry_sampler_states(pipe, num_samplers, samplers); 1800ad95b923a2bfd91677872765946b6a2f8d11260Brian Paul break; 1810ad95b923a2bfd91677872765946b6a2f8d11260Brian Paul case PIPE_SHADER_FRAGMENT: 1820ad95b923a2bfd91677872765946b6a2f8d11260Brian Paul pipe->bind_fragment_sampler_states(pipe, num_samplers, samplers); 1830ad95b923a2bfd91677872765946b6a2f8d11260Brian Paul break; 1840ad95b923a2bfd91677872765946b6a2f8d11260Brian Paul default: 1850ad95b923a2bfd91677872765946b6a2f8d11260Brian Paul debug_error("Unexpected shader in identity_bind_sampler_states()"); 1860ad95b923a2bfd91677872765946b6a2f8d11260Brian Paul } 1870ad95b923a2bfd91677872765946b6a2f8d11260Brian Paul} 1880ad95b923a2bfd91677872765946b6a2f8d11260Brian Paul 1890ad95b923a2bfd91677872765946b6a2f8d11260Brian Paulstatic void 190f2f7bd855af49752b1c77746542c62f1c529e953Michal Krolidentity_bind_fragment_sampler_states(struct pipe_context *_pipe, 191f2f7bd855af49752b1c77746542c62f1c529e953Michal Krol unsigned num_samplers, 192f2f7bd855af49752b1c77746542c62f1c529e953Michal Krol void **samplers) 193d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz{ 1940ad95b923a2bfd91677872765946b6a2f8d11260Brian Paul identity_bind_sampler_states(_pipe, PIPE_SHADER_FRAGMENT, 195d4ab8bd0955f1b114acee80f17a2e82c7129cc1aBrian Paul 0, num_samplers, samplers); 196d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz} 197d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 198d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantzstatic void 199f2f7bd855af49752b1c77746542c62f1c529e953Michal Krolidentity_bind_vertex_sampler_states(struct pipe_context *_pipe, 200f2f7bd855af49752b1c77746542c62f1c529e953Michal Krol unsigned num_samplers, 201f2f7bd855af49752b1c77746542c62f1c529e953Michal Krol void **samplers) 202f2f7bd855af49752b1c77746542c62f1c529e953Michal Krol{ 2030ad95b923a2bfd91677872765946b6a2f8d11260Brian Paul identity_bind_sampler_states(_pipe, PIPE_SHADER_VERTEX, 204d4ab8bd0955f1b114acee80f17a2e82c7129cc1aBrian Paul 0, num_samplers, samplers); 205f2f7bd855af49752b1c77746542c62f1c529e953Michal Krol} 206f2f7bd855af49752b1c77746542c62f1c529e953Michal Krol 207f2f7bd855af49752b1c77746542c62f1c529e953Michal Krolstatic void 208d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantzidentity_delete_sampler_state(struct pipe_context *_pipe, 209d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz void *sampler) 210d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz{ 211d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct identity_context *id_pipe = identity_context(_pipe); 212d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct pipe_context *pipe = id_pipe->pipe; 213d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 214d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz pipe->delete_sampler_state(pipe, 215d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz sampler); 216d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz} 217d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 218d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantzstatic void * 219d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantzidentity_create_rasterizer_state(struct pipe_context *_pipe, 220d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz const struct pipe_rasterizer_state *rasterizer) 221d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz{ 222d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct identity_context *id_pipe = identity_context(_pipe); 223d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct pipe_context *pipe = id_pipe->pipe; 224d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 225d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz return pipe->create_rasterizer_state(pipe, 226d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz rasterizer); 227d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz} 228d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 229d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantzstatic void 230d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantzidentity_bind_rasterizer_state(struct pipe_context *_pipe, 231d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz void *rasterizer) 232d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz{ 233d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct identity_context *id_pipe = identity_context(_pipe); 234d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct pipe_context *pipe = id_pipe->pipe; 235d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 236d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz pipe->bind_rasterizer_state(pipe, 237d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz rasterizer); 238d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz} 239d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 240d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantzstatic void 241d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantzidentity_delete_rasterizer_state(struct pipe_context *_pipe, 242d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz void *rasterizer) 243d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz{ 244d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct identity_context *id_pipe = identity_context(_pipe); 245d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct pipe_context *pipe = id_pipe->pipe; 246d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 247d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz pipe->delete_rasterizer_state(pipe, 248d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz rasterizer); 249d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz} 250d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 251d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantzstatic void * 252d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantzidentity_create_depth_stencil_alpha_state(struct pipe_context *_pipe, 253d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz const struct pipe_depth_stencil_alpha_state *depth_stencil_alpha) 254d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz{ 255d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct identity_context *id_pipe = identity_context(_pipe); 256d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct pipe_context *pipe = id_pipe->pipe; 257d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 258d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz return pipe->create_depth_stencil_alpha_state(pipe, 259d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz depth_stencil_alpha); 260d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz} 261d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 262d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantzstatic void 263d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantzidentity_bind_depth_stencil_alpha_state(struct pipe_context *_pipe, 264d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz void *depth_stencil_alpha) 265d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz{ 266d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct identity_context *id_pipe = identity_context(_pipe); 267d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct pipe_context *pipe = id_pipe->pipe; 268d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 269d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz pipe->bind_depth_stencil_alpha_state(pipe, 270d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz depth_stencil_alpha); 271d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz} 272d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 273d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantzstatic void 274d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantzidentity_delete_depth_stencil_alpha_state(struct pipe_context *_pipe, 275d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz void *depth_stencil_alpha) 276d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz{ 277d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct identity_context *id_pipe = identity_context(_pipe); 278d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct pipe_context *pipe = id_pipe->pipe; 279d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 280d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz pipe->delete_depth_stencil_alpha_state(pipe, 281d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz depth_stencil_alpha); 282d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz} 283d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 284d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantzstatic void * 285d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantzidentity_create_fs_state(struct pipe_context *_pipe, 286d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz const struct pipe_shader_state *fs) 287d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz{ 288d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct identity_context *id_pipe = identity_context(_pipe); 289d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct pipe_context *pipe = id_pipe->pipe; 290d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 291d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz return pipe->create_fs_state(pipe, 292d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz fs); 293d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz} 294d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 295d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantzstatic void 296d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantzidentity_bind_fs_state(struct pipe_context *_pipe, 297d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz void *fs) 298d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz{ 299d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct identity_context *id_pipe = identity_context(_pipe); 300d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct pipe_context *pipe = id_pipe->pipe; 301d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 302d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz pipe->bind_fs_state(pipe, 303d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz fs); 304d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz} 305d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 306d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantzstatic void 307d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantzidentity_delete_fs_state(struct pipe_context *_pipe, 308d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz void *fs) 309d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz{ 310d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct identity_context *id_pipe = identity_context(_pipe); 311d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct pipe_context *pipe = id_pipe->pipe; 312d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 313d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz pipe->delete_fs_state(pipe, 314d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz fs); 315d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz} 316d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 317d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantzstatic void * 318d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantzidentity_create_vs_state(struct pipe_context *_pipe, 319d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz const struct pipe_shader_state *vs) 320d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz{ 321d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct identity_context *id_pipe = identity_context(_pipe); 322d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct pipe_context *pipe = id_pipe->pipe; 323d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 324d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz return pipe->create_vs_state(pipe, 325d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz vs); 326d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz} 327d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 328d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantzstatic void 329d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantzidentity_bind_vs_state(struct pipe_context *_pipe, 330d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz void *vs) 331d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz{ 332d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct identity_context *id_pipe = identity_context(_pipe); 333d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct pipe_context *pipe = id_pipe->pipe; 334d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 335d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz pipe->bind_vs_state(pipe, 336d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz vs); 337d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz} 338d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 339d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantzstatic void 340d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantzidentity_delete_vs_state(struct pipe_context *_pipe, 341d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz void *vs) 342d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz{ 343d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct identity_context *id_pipe = identity_context(_pipe); 344d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct pipe_context *pipe = id_pipe->pipe; 345d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 346d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz pipe->delete_vs_state(pipe, 347d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz vs); 348d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz} 349d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 350881be308360ec8019f17bc970bece23e9395134fRoland Scheidegger 3514d02534628e5fd4cd1231c5d742928b34067f25cRoland Scheideggerstatic void * 352881be308360ec8019f17bc970bece23e9395134fRoland Scheideggeridentity_create_vertex_elements_state(struct pipe_context *_pipe, 353881be308360ec8019f17bc970bece23e9395134fRoland Scheidegger unsigned num_elements, 354881be308360ec8019f17bc970bece23e9395134fRoland Scheidegger const struct pipe_vertex_element *vertex_elements) 355881be308360ec8019f17bc970bece23e9395134fRoland Scheidegger{ 356881be308360ec8019f17bc970bece23e9395134fRoland Scheidegger struct identity_context *id_pipe = identity_context(_pipe); 357881be308360ec8019f17bc970bece23e9395134fRoland Scheidegger struct pipe_context *pipe = id_pipe->pipe; 358881be308360ec8019f17bc970bece23e9395134fRoland Scheidegger 3594d02534628e5fd4cd1231c5d742928b34067f25cRoland Scheidegger return pipe->create_vertex_elements_state(pipe, 3604d02534628e5fd4cd1231c5d742928b34067f25cRoland Scheidegger num_elements, 3614d02534628e5fd4cd1231c5d742928b34067f25cRoland Scheidegger vertex_elements); 362881be308360ec8019f17bc970bece23e9395134fRoland Scheidegger} 363881be308360ec8019f17bc970bece23e9395134fRoland Scheidegger 364881be308360ec8019f17bc970bece23e9395134fRoland Scheideggerstatic void 365881be308360ec8019f17bc970bece23e9395134fRoland Scheideggeridentity_bind_vertex_elements_state(struct pipe_context *_pipe, 366881be308360ec8019f17bc970bece23e9395134fRoland Scheidegger void *velems) 367881be308360ec8019f17bc970bece23e9395134fRoland Scheidegger{ 368881be308360ec8019f17bc970bece23e9395134fRoland Scheidegger struct identity_context *id_pipe = identity_context(_pipe); 369881be308360ec8019f17bc970bece23e9395134fRoland Scheidegger struct pipe_context *pipe = id_pipe->pipe; 370881be308360ec8019f17bc970bece23e9395134fRoland Scheidegger 371881be308360ec8019f17bc970bece23e9395134fRoland Scheidegger pipe->bind_vertex_elements_state(pipe, 372881be308360ec8019f17bc970bece23e9395134fRoland Scheidegger velems); 373881be308360ec8019f17bc970bece23e9395134fRoland Scheidegger} 374881be308360ec8019f17bc970bece23e9395134fRoland Scheidegger 375881be308360ec8019f17bc970bece23e9395134fRoland Scheideggerstatic void 376881be308360ec8019f17bc970bece23e9395134fRoland Scheideggeridentity_delete_vertex_elements_state(struct pipe_context *_pipe, 377881be308360ec8019f17bc970bece23e9395134fRoland Scheidegger void *velems) 378881be308360ec8019f17bc970bece23e9395134fRoland Scheidegger{ 379881be308360ec8019f17bc970bece23e9395134fRoland Scheidegger struct identity_context *id_pipe = identity_context(_pipe); 380881be308360ec8019f17bc970bece23e9395134fRoland Scheidegger struct pipe_context *pipe = id_pipe->pipe; 381881be308360ec8019f17bc970bece23e9395134fRoland Scheidegger 382881be308360ec8019f17bc970bece23e9395134fRoland Scheidegger pipe->delete_vertex_elements_state(pipe, 383881be308360ec8019f17bc970bece23e9395134fRoland Scheidegger velems); 384881be308360ec8019f17bc970bece23e9395134fRoland Scheidegger} 385881be308360ec8019f17bc970bece23e9395134fRoland Scheidegger 386d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantzstatic void 387d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantzidentity_set_blend_color(struct pipe_context *_pipe, 388d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz const struct pipe_blend_color *blend_color) 389d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz{ 390d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct identity_context *id_pipe = identity_context(_pipe); 391d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct pipe_context *pipe = id_pipe->pipe; 392d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 393d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz pipe->set_blend_color(pipe, 394d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz blend_color); 395d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz} 396d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 397d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantzstatic void 3984ea2f61e5ae556fa4141cd226ecbf1521e9f16ffRoland Scheideggeridentity_set_stencil_ref(struct pipe_context *_pipe, 3994ea2f61e5ae556fa4141cd226ecbf1521e9f16ffRoland Scheidegger const struct pipe_stencil_ref *stencil_ref) 4004ea2f61e5ae556fa4141cd226ecbf1521e9f16ffRoland Scheidegger{ 4014ea2f61e5ae556fa4141cd226ecbf1521e9f16ffRoland Scheidegger struct identity_context *id_pipe = identity_context(_pipe); 4024ea2f61e5ae556fa4141cd226ecbf1521e9f16ffRoland Scheidegger struct pipe_context *pipe = id_pipe->pipe; 4034ea2f61e5ae556fa4141cd226ecbf1521e9f16ffRoland Scheidegger 4044ea2f61e5ae556fa4141cd226ecbf1521e9f16ffRoland Scheidegger pipe->set_stencil_ref(pipe, 4054ea2f61e5ae556fa4141cd226ecbf1521e9f16ffRoland Scheidegger stencil_ref); 4064ea2f61e5ae556fa4141cd226ecbf1521e9f16ffRoland Scheidegger} 4074ea2f61e5ae556fa4141cd226ecbf1521e9f16ffRoland Scheidegger 4084ea2f61e5ae556fa4141cd226ecbf1521e9f16ffRoland Scheideggerstatic void 409d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantzidentity_set_clip_state(struct pipe_context *_pipe, 410d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz const struct pipe_clip_state *clip) 411d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz{ 412d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct identity_context *id_pipe = identity_context(_pipe); 413d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct pipe_context *pipe = id_pipe->pipe; 414d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 415d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz pipe->set_clip_state(pipe, 416d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz clip); 417d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz} 418d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 419d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantzstatic void 42043234cee40c48e14a3eab4268181d9b0b2b7cf79Roland Scheideggeridentity_set_sample_mask(struct pipe_context *_pipe, 42143234cee40c48e14a3eab4268181d9b0b2b7cf79Roland Scheidegger unsigned sample_mask) 42243234cee40c48e14a3eab4268181d9b0b2b7cf79Roland Scheidegger{ 42343234cee40c48e14a3eab4268181d9b0b2b7cf79Roland Scheidegger struct identity_context *id_pipe = identity_context(_pipe); 42443234cee40c48e14a3eab4268181d9b0b2b7cf79Roland Scheidegger struct pipe_context *pipe = id_pipe->pipe; 42543234cee40c48e14a3eab4268181d9b0b2b7cf79Roland Scheidegger 42643234cee40c48e14a3eab4268181d9b0b2b7cf79Roland Scheidegger pipe->set_sample_mask(pipe, 42743234cee40c48e14a3eab4268181d9b0b2b7cf79Roland Scheidegger sample_mask); 42843234cee40c48e14a3eab4268181d9b0b2b7cf79Roland Scheidegger} 42943234cee40c48e14a3eab4268181d9b0b2b7cf79Roland Scheidegger 43043234cee40c48e14a3eab4268181d9b0b2b7cf79Roland Scheideggerstatic void 431d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantzidentity_set_constant_buffer(struct pipe_context *_pipe, 432d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz uint shader, 433d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz uint index, 434507337864fa80caf9f26602324d2c28dd0a75d61Marek Olšák struct pipe_constant_buffer *_cb) 435d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz{ 436d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct identity_context *id_pipe = identity_context(_pipe); 437d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct pipe_context *pipe = id_pipe->pipe; 438507337864fa80caf9f26602324d2c28dd0a75d61Marek Olšák struct pipe_constant_buffer cb; 439d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 4401278507e3bf2e83c7027820a0d313de267a440ffRoland Scheidegger /* XXX hmm? unwrap the input state */ 441507337864fa80caf9f26602324d2c28dd0a75d61Marek Olšák if (_cb) { 442507337864fa80caf9f26602324d2c28dd0a75d61Marek Olšák cb = *_cb; 443507337864fa80caf9f26602324d2c28dd0a75d61Marek Olšák cb.buffer = identity_resource_unwrap(_cb->buffer); 444d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz } 445d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 446d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz pipe->set_constant_buffer(pipe, 447d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz shader, 448d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz index, 449507337864fa80caf9f26602324d2c28dd0a75d61Marek Olšák _cb ? &cb : NULL); 450d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz} 451d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 452d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantzstatic void 453d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantzidentity_set_framebuffer_state(struct pipe_context *_pipe, 454d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz const struct pipe_framebuffer_state *_state) 455d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz{ 456d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct identity_context *id_pipe = identity_context(_pipe); 457d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct pipe_context *pipe = id_pipe->pipe; 458d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct pipe_framebuffer_state unwrapped_state; 459d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct pipe_framebuffer_state *state = NULL; 460d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz unsigned i; 461d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 462d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz /* unwrap the input state */ 463d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz if (_state) { 464d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz memcpy(&unwrapped_state, _state, sizeof(unwrapped_state)); 465d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz for(i = 0; i < _state->nr_cbufs; i++) 466d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz unwrapped_state.cbufs[i] = identity_surface_unwrap(_state->cbufs[i]); 467d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz for (; i < PIPE_MAX_COLOR_BUFS; i++) 468d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz unwrapped_state.cbufs[i] = NULL; 469d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz unwrapped_state.zsbuf = identity_surface_unwrap(_state->zsbuf); 470d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz state = &unwrapped_state; 471d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz } 472d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 473d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz pipe->set_framebuffer_state(pipe, 474d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz state); 475d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz} 476d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 477d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantzstatic void 478d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantzidentity_set_polygon_stipple(struct pipe_context *_pipe, 479d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz const struct pipe_poly_stipple *poly_stipple) 480d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz{ 481d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct identity_context *id_pipe = identity_context(_pipe); 482d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct pipe_context *pipe = id_pipe->pipe; 483d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 484d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz pipe->set_polygon_stipple(pipe, 485d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz poly_stipple); 486d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz} 487d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 488d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantzstatic void 489d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantzidentity_set_scissor_state(struct pipe_context *_pipe, 490d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz const struct pipe_scissor_state *scissor) 491d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz{ 492d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct identity_context *id_pipe = identity_context(_pipe); 493d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct pipe_context *pipe = id_pipe->pipe; 494d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 495d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz pipe->set_scissor_state(pipe, 496d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz scissor); 497d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz} 498d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 499d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantzstatic void 500d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantzidentity_set_viewport_state(struct pipe_context *_pipe, 501d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz const struct pipe_viewport_state *viewport) 502d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz{ 503d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct identity_context *id_pipe = identity_context(_pipe); 504d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct pipe_context *pipe = id_pipe->pipe; 505d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 506d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz pipe->set_viewport_state(pipe, 507d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz viewport); 508d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz} 509d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 510d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantzstatic void 5110ad95b923a2bfd91677872765946b6a2f8d11260Brian Paulidentity_set_sampler_views(struct pipe_context *_pipe, 5120ad95b923a2bfd91677872765946b6a2f8d11260Brian Paul unsigned shader, 513d4ab8bd0955f1b114acee80f17a2e82c7129cc1aBrian Paul unsigned start, 5140ad95b923a2bfd91677872765946b6a2f8d11260Brian Paul unsigned num, 5150ad95b923a2bfd91677872765946b6a2f8d11260Brian Paul struct pipe_sampler_view **_views) 516d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz{ 517d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct identity_context *id_pipe = identity_context(_pipe); 518d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct pipe_context *pipe = id_pipe->pipe; 519f6106566081978f663cf08e54bb8908cb58a5316Michal Krol struct pipe_sampler_view *unwrapped_views[PIPE_MAX_SAMPLERS]; 520f6106566081978f663cf08e54bb8908cb58a5316Michal Krol struct pipe_sampler_view **views = NULL; 521d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz unsigned i; 522d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 523d4ab8bd0955f1b114acee80f17a2e82c7129cc1aBrian Paul /* remove this when we have pipe->set_sampler_views(..., start, ...) */ 524d4ab8bd0955f1b114acee80f17a2e82c7129cc1aBrian Paul assert(start == 0); 525d4ab8bd0955f1b114acee80f17a2e82c7129cc1aBrian Paul 526f6106566081978f663cf08e54bb8908cb58a5316Michal Krol if (_views) { 527f6106566081978f663cf08e54bb8908cb58a5316Michal Krol for (i = 0; i < num; i++) 528f6106566081978f663cf08e54bb8908cb58a5316Michal Krol unwrapped_views[i] = identity_sampler_view_unwrap(_views[i]); 529d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz for (; i < PIPE_MAX_SAMPLERS; i++) 530f6106566081978f663cf08e54bb8908cb58a5316Michal Krol unwrapped_views[i] = NULL; 531d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 532f6106566081978f663cf08e54bb8908cb58a5316Michal Krol views = unwrapped_views; 533d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz } 534d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 5350ad95b923a2bfd91677872765946b6a2f8d11260Brian Paul switch (shader) { 5360ad95b923a2bfd91677872765946b6a2f8d11260Brian Paul case PIPE_SHADER_VERTEX: 5370ad95b923a2bfd91677872765946b6a2f8d11260Brian Paul pipe->set_vertex_sampler_views(pipe, num, views); 5380ad95b923a2bfd91677872765946b6a2f8d11260Brian Paul break; 5390ad95b923a2bfd91677872765946b6a2f8d11260Brian Paul case PIPE_SHADER_GEOMETRY: 5400ad95b923a2bfd91677872765946b6a2f8d11260Brian Paul pipe->set_geometry_sampler_views(pipe, num, views); 5410ad95b923a2bfd91677872765946b6a2f8d11260Brian Paul break; 5420ad95b923a2bfd91677872765946b6a2f8d11260Brian Paul case PIPE_SHADER_FRAGMENT: 5430ad95b923a2bfd91677872765946b6a2f8d11260Brian Paul pipe->set_fragment_sampler_views(pipe, num, views); 5440ad95b923a2bfd91677872765946b6a2f8d11260Brian Paul break; 5450ad95b923a2bfd91677872765946b6a2f8d11260Brian Paul default: 5460ad95b923a2bfd91677872765946b6a2f8d11260Brian Paul debug_error("Unexpected shader in identity_set_sampler_views()"); 5470ad95b923a2bfd91677872765946b6a2f8d11260Brian Paul } 5480ad95b923a2bfd91677872765946b6a2f8d11260Brian Paul} 5490ad95b923a2bfd91677872765946b6a2f8d11260Brian Paul 5500ad95b923a2bfd91677872765946b6a2f8d11260Brian Paulstatic void 5510ad95b923a2bfd91677872765946b6a2f8d11260Brian Paulidentity_set_fragment_sampler_views(struct pipe_context *_pipe, 5520ad95b923a2bfd91677872765946b6a2f8d11260Brian Paul unsigned num, 5530ad95b923a2bfd91677872765946b6a2f8d11260Brian Paul struct pipe_sampler_view **_views) 5540ad95b923a2bfd91677872765946b6a2f8d11260Brian Paul{ 555d4ab8bd0955f1b114acee80f17a2e82c7129cc1aBrian Paul identity_set_sampler_views(_pipe, PIPE_SHADER_FRAGMENT, 0, num, _views); 556d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz} 557d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 558d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantzstatic void 559f6106566081978f663cf08e54bb8908cb58a5316Michal Krolidentity_set_vertex_sampler_views(struct pipe_context *_pipe, 560f6106566081978f663cf08e54bb8908cb58a5316Michal Krol unsigned num, 561f6106566081978f663cf08e54bb8908cb58a5316Michal Krol struct pipe_sampler_view **_views) 562f2f7bd855af49752b1c77746542c62f1c529e953Michal Krol{ 563d4ab8bd0955f1b114acee80f17a2e82c7129cc1aBrian Paul identity_set_sampler_views(_pipe, PIPE_SHADER_VERTEX, 0, num, _views); 564f2f7bd855af49752b1c77746542c62f1c529e953Michal Krol} 565f2f7bd855af49752b1c77746542c62f1c529e953Michal Krol 566f2f7bd855af49752b1c77746542c62f1c529e953Michal Krolstatic void 567d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantzidentity_set_vertex_buffers(struct pipe_context *_pipe, 568d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz unsigned num_buffers, 569d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz const struct pipe_vertex_buffer *_buffers) 570d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz{ 571d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct identity_context *id_pipe = identity_context(_pipe); 572d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct pipe_context *pipe = id_pipe->pipe; 573d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct pipe_vertex_buffer unwrapped_buffers[PIPE_MAX_SHADER_INPUTS]; 574d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct pipe_vertex_buffer *buffers = NULL; 575d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz unsigned i; 576d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 577d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz if (num_buffers) { 578d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz memcpy(unwrapped_buffers, _buffers, num_buffers * sizeof(*_buffers)); 579d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz for (i = 0; i < num_buffers; i++) 580287c94ea4987033f9c99a2f91c5750c9083504caKeith Whitwell unwrapped_buffers[i].buffer = identity_resource_unwrap(_buffers[i].buffer); 581d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz buffers = unwrapped_buffers; 582d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz } 583d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 584d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz pipe->set_vertex_buffers(pipe, 585d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz num_buffers, 586d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz buffers); 587d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz} 5886d28bf917fb1d741d90fd3f05c22769376021fcaChia-I Wu 5896d28bf917fb1d741d90fd3f05c22769376021fcaChia-I Wustatic void 5906d28bf917fb1d741d90fd3f05c22769376021fcaChia-I Wuidentity_set_index_buffer(struct pipe_context *_pipe, 5916d28bf917fb1d741d90fd3f05c22769376021fcaChia-I Wu const struct pipe_index_buffer *_ib) 5926d28bf917fb1d741d90fd3f05c22769376021fcaChia-I Wu{ 5936d28bf917fb1d741d90fd3f05c22769376021fcaChia-I Wu struct identity_context *id_pipe = identity_context(_pipe); 5946d28bf917fb1d741d90fd3f05c22769376021fcaChia-I Wu struct pipe_context *pipe = id_pipe->pipe; 5956d28bf917fb1d741d90fd3f05c22769376021fcaChia-I Wu struct pipe_index_buffer unwrapped_ib, *ib = NULL; 5966d28bf917fb1d741d90fd3f05c22769376021fcaChia-I Wu 5976d28bf917fb1d741d90fd3f05c22769376021fcaChia-I Wu if (_ib) { 5986d28bf917fb1d741d90fd3f05c22769376021fcaChia-I Wu unwrapped_ib = *_ib; 5996d28bf917fb1d741d90fd3f05c22769376021fcaChia-I Wu unwrapped_ib.buffer = identity_resource_unwrap(_ib->buffer); 6006d28bf917fb1d741d90fd3f05c22769376021fcaChia-I Wu ib = &unwrapped_ib; 6016d28bf917fb1d741d90fd3f05c22769376021fcaChia-I Wu } 6026d28bf917fb1d741d90fd3f05c22769376021fcaChia-I Wu 6036d28bf917fb1d741d90fd3f05c22769376021fcaChia-I Wu pipe->set_index_buffer(pipe, ib); 6046d28bf917fb1d741d90fd3f05c22769376021fcaChia-I Wu} 6056d28bf917fb1d741d90fd3f05c22769376021fcaChia-I Wu 606d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantzstatic void 607fd578be828e1dd7c25160e7748b30b1421f4d0c7Roland Scheideggeridentity_resource_copy_region(struct pipe_context *_pipe, 608fd578be828e1dd7c25160e7748b30b1421f4d0c7Roland Scheidegger struct pipe_resource *_dst, 6094c7001462607e6e99e474d6271dd481d3f8f201cRoland Scheidegger unsigned dst_level, 610fd578be828e1dd7c25160e7748b30b1421f4d0c7Roland Scheidegger unsigned dstx, 611fd578be828e1dd7c25160e7748b30b1421f4d0c7Roland Scheidegger unsigned dsty, 612fd578be828e1dd7c25160e7748b30b1421f4d0c7Roland Scheidegger unsigned dstz, 613fd578be828e1dd7c25160e7748b30b1421f4d0c7Roland Scheidegger struct pipe_resource *_src, 6144c7001462607e6e99e474d6271dd481d3f8f201cRoland Scheidegger unsigned src_level, 6154c7001462607e6e99e474d6271dd481d3f8f201cRoland Scheidegger const struct pipe_box *src_box) 616fd578be828e1dd7c25160e7748b30b1421f4d0c7Roland Scheidegger{ 617fd578be828e1dd7c25160e7748b30b1421f4d0c7Roland Scheidegger struct identity_context *id_pipe = identity_context(_pipe); 618fd578be828e1dd7c25160e7748b30b1421f4d0c7Roland Scheidegger struct identity_resource *id_resource_dst = identity_resource(_dst); 619fd578be828e1dd7c25160e7748b30b1421f4d0c7Roland Scheidegger struct identity_resource *id_resource_src = identity_resource(_src); 620fd578be828e1dd7c25160e7748b30b1421f4d0c7Roland Scheidegger struct pipe_context *pipe = id_pipe->pipe; 621fd578be828e1dd7c25160e7748b30b1421f4d0c7Roland Scheidegger struct pipe_resource *dst = id_resource_dst->resource; 622fd578be828e1dd7c25160e7748b30b1421f4d0c7Roland Scheidegger struct pipe_resource *src = id_resource_src->resource; 623fd578be828e1dd7c25160e7748b30b1421f4d0c7Roland Scheidegger 624fd578be828e1dd7c25160e7748b30b1421f4d0c7Roland Scheidegger pipe->resource_copy_region(pipe, 625fd578be828e1dd7c25160e7748b30b1421f4d0c7Roland Scheidegger dst, 6264c7001462607e6e99e474d6271dd481d3f8f201cRoland Scheidegger dst_level, 627fd578be828e1dd7c25160e7748b30b1421f4d0c7Roland Scheidegger dstx, 628fd578be828e1dd7c25160e7748b30b1421f4d0c7Roland Scheidegger dsty, 629fd578be828e1dd7c25160e7748b30b1421f4d0c7Roland Scheidegger dstz, 630fd578be828e1dd7c25160e7748b30b1421f4d0c7Roland Scheidegger src, 6314c7001462607e6e99e474d6271dd481d3f8f201cRoland Scheidegger src_level, 6324c7001462607e6e99e474d6271dd481d3f8f201cRoland Scheidegger src_box); 633fd578be828e1dd7c25160e7748b30b1421f4d0c7Roland Scheidegger} 634fd578be828e1dd7c25160e7748b30b1421f4d0c7Roland Scheidegger 635fd578be828e1dd7c25160e7748b30b1421f4d0c7Roland Scheideggerstatic void 636d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantzidentity_clear(struct pipe_context *_pipe, 637d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz unsigned buffers, 6386dd284f7c8fac22f64c13fdf9909094f5ec59086Dave Airlie const union pipe_color_union *color, 639d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz double depth, 640d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz unsigned stencil) 641d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz{ 642d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct identity_context *id_pipe = identity_context(_pipe); 643d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct pipe_context *pipe = id_pipe->pipe; 644d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 645d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz pipe->clear(pipe, 646d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz buffers, 6476dd284f7c8fac22f64c13fdf9909094f5ec59086Dave Airlie color, 648d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz depth, 649d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz stencil); 650d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz} 651d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 652d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantzstatic void 653a6e5c6c000df8655de3b41d5809547bb41c88c23Roland Scheideggeridentity_clear_render_target(struct pipe_context *_pipe, 654a6e5c6c000df8655de3b41d5809547bb41c88c23Roland Scheidegger struct pipe_surface *_dst, 6556dd284f7c8fac22f64c13fdf9909094f5ec59086Dave Airlie const union pipe_color_union *color, 656a6e5c6c000df8655de3b41d5809547bb41c88c23Roland Scheidegger unsigned dstx, unsigned dsty, 657a6e5c6c000df8655de3b41d5809547bb41c88c23Roland Scheidegger unsigned width, unsigned height) 65825296a3ed380f2a2179a9f435645a7ccaf10c04cRoland Scheidegger{ 65925296a3ed380f2a2179a9f435645a7ccaf10c04cRoland Scheidegger struct identity_context *id_pipe = identity_context(_pipe); 66025296a3ed380f2a2179a9f435645a7ccaf10c04cRoland Scheidegger struct identity_surface *id_surface_dst = identity_surface(_dst); 66125296a3ed380f2a2179a9f435645a7ccaf10c04cRoland Scheidegger struct pipe_context *pipe = id_pipe->pipe; 66225296a3ed380f2a2179a9f435645a7ccaf10c04cRoland Scheidegger struct pipe_surface *dst = id_surface_dst->surface; 66325296a3ed380f2a2179a9f435645a7ccaf10c04cRoland Scheidegger 664a6e5c6c000df8655de3b41d5809547bb41c88c23Roland Scheidegger pipe->clear_render_target(pipe, 665a6e5c6c000df8655de3b41d5809547bb41c88c23Roland Scheidegger dst, 6666dd284f7c8fac22f64c13fdf9909094f5ec59086Dave Airlie color, 667a6e5c6c000df8655de3b41d5809547bb41c88c23Roland Scheidegger dstx, 668a6e5c6c000df8655de3b41d5809547bb41c88c23Roland Scheidegger dsty, 669a6e5c6c000df8655de3b41d5809547bb41c88c23Roland Scheidegger width, 670a6e5c6c000df8655de3b41d5809547bb41c88c23Roland Scheidegger height); 67125296a3ed380f2a2179a9f435645a7ccaf10c04cRoland Scheidegger} 67225296a3ed380f2a2179a9f435645a7ccaf10c04cRoland Scheideggerstatic void 673a6e5c6c000df8655de3b41d5809547bb41c88c23Roland Scheideggeridentity_clear_depth_stencil(struct pipe_context *_pipe, 674a6e5c6c000df8655de3b41d5809547bb41c88c23Roland Scheidegger struct pipe_surface *_dst, 675a6e5c6c000df8655de3b41d5809547bb41c88c23Roland Scheidegger unsigned clear_flags, 676a6e5c6c000df8655de3b41d5809547bb41c88c23Roland Scheidegger double depth, 677a6e5c6c000df8655de3b41d5809547bb41c88c23Roland Scheidegger unsigned stencil, 678a6e5c6c000df8655de3b41d5809547bb41c88c23Roland Scheidegger unsigned dstx, unsigned dsty, 679a6e5c6c000df8655de3b41d5809547bb41c88c23Roland Scheidegger unsigned width, unsigned height) 68025296a3ed380f2a2179a9f435645a7ccaf10c04cRoland Scheidegger{ 68125296a3ed380f2a2179a9f435645a7ccaf10c04cRoland Scheidegger struct identity_context *id_pipe = identity_context(_pipe); 68225296a3ed380f2a2179a9f435645a7ccaf10c04cRoland Scheidegger struct identity_surface *id_surface_dst = identity_surface(_dst); 68325296a3ed380f2a2179a9f435645a7ccaf10c04cRoland Scheidegger struct pipe_context *pipe = id_pipe->pipe; 68425296a3ed380f2a2179a9f435645a7ccaf10c04cRoland Scheidegger struct pipe_surface *dst = id_surface_dst->surface; 68525296a3ed380f2a2179a9f435645a7ccaf10c04cRoland Scheidegger 686a6e5c6c000df8655de3b41d5809547bb41c88c23Roland Scheidegger pipe->clear_depth_stencil(pipe, 687a6e5c6c000df8655de3b41d5809547bb41c88c23Roland Scheidegger dst, 688a6e5c6c000df8655de3b41d5809547bb41c88c23Roland Scheidegger clear_flags, 689a6e5c6c000df8655de3b41d5809547bb41c88c23Roland Scheidegger depth, 690a6e5c6c000df8655de3b41d5809547bb41c88c23Roland Scheidegger stencil, 691a6e5c6c000df8655de3b41d5809547bb41c88c23Roland Scheidegger dstx, 692a6e5c6c000df8655de3b41d5809547bb41c88c23Roland Scheidegger dsty, 693a6e5c6c000df8655de3b41d5809547bb41c88c23Roland Scheidegger width, 694a6e5c6c000df8655de3b41d5809547bb41c88c23Roland Scheidegger height); 69525296a3ed380f2a2179a9f435645a7ccaf10c04cRoland Scheidegger 69625296a3ed380f2a2179a9f435645a7ccaf10c04cRoland Scheidegger} 69725296a3ed380f2a2179a9f435645a7ccaf10c04cRoland Scheidegger 69825296a3ed380f2a2179a9f435645a7ccaf10c04cRoland Scheideggerstatic void 699d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantzidentity_flush(struct pipe_context *_pipe, 700d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct pipe_fence_handle **fence) 701d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz{ 702d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct identity_context *id_pipe = identity_context(_pipe); 703d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct pipe_context *pipe = id_pipe->pipe; 704d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 705d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz pipe->flush(pipe, 706d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz fence); 707d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz} 708d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 70914a146c4995da5074eb1192a818b7a3dfc3bb438Michal Krolstatic struct pipe_sampler_view * 710c2c1f60391113490f4f90efb2786544c599ac991Jakob Bornecrantzidentity_context_create_sampler_view(struct pipe_context *_pipe, 711c2c1f60391113490f4f90efb2786544c599ac991Jakob Bornecrantz struct pipe_resource *_resource, 712c2c1f60391113490f4f90efb2786544c599ac991Jakob Bornecrantz const struct pipe_sampler_view *templ) 71314a146c4995da5074eb1192a818b7a3dfc3bb438Michal Krol{ 714c2c1f60391113490f4f90efb2786544c599ac991Jakob Bornecrantz struct identity_context *id_context = identity_context(_pipe); 715c2c1f60391113490f4f90efb2786544c599ac991Jakob Bornecrantz struct identity_resource *id_resource = identity_resource(_resource); 716c2c1f60391113490f4f90efb2786544c599ac991Jakob Bornecrantz struct pipe_context *pipe = id_context->pipe; 717c2c1f60391113490f4f90efb2786544c599ac991Jakob Bornecrantz struct pipe_resource *resource = id_resource->resource; 718c2c1f60391113490f4f90efb2786544c599ac991Jakob Bornecrantz struct pipe_sampler_view *result; 71914a146c4995da5074eb1192a818b7a3dfc3bb438Michal Krol 720c2c1f60391113490f4f90efb2786544c599ac991Jakob Bornecrantz result = pipe->create_sampler_view(pipe, 721c2c1f60391113490f4f90efb2786544c599ac991Jakob Bornecrantz resource, 722c2c1f60391113490f4f90efb2786544c599ac991Jakob Bornecrantz templ); 72314a146c4995da5074eb1192a818b7a3dfc3bb438Michal Krol 724c2c1f60391113490f4f90efb2786544c599ac991Jakob Bornecrantz if (result) 725c2c1f60391113490f4f90efb2786544c599ac991Jakob Bornecrantz return identity_sampler_view_create(id_context, id_resource, result); 726c2c1f60391113490f4f90efb2786544c599ac991Jakob Bornecrantz return NULL; 72714a146c4995da5074eb1192a818b7a3dfc3bb438Michal Krol} 72814a146c4995da5074eb1192a818b7a3dfc3bb438Michal Krol 72914a146c4995da5074eb1192a818b7a3dfc3bb438Michal Krolstatic void 730c2c1f60391113490f4f90efb2786544c599ac991Jakob Bornecrantzidentity_context_sampler_view_destroy(struct pipe_context *_pipe, 731c2c1f60391113490f4f90efb2786544c599ac991Jakob Bornecrantz struct pipe_sampler_view *_view) 73214a146c4995da5074eb1192a818b7a3dfc3bb438Michal Krol{ 733c2c1f60391113490f4f90efb2786544c599ac991Jakob Bornecrantz identity_sampler_view_destroy(identity_context(_pipe), 734c2c1f60391113490f4f90efb2786544c599ac991Jakob Bornecrantz identity_sampler_view(_view)); 73514a146c4995da5074eb1192a818b7a3dfc3bb438Michal Krol} 73614a146c4995da5074eb1192a818b7a3dfc3bb438Michal Krol 7374c7001462607e6e99e474d6271dd481d3f8f201cRoland Scheideggerstatic struct pipe_surface * 7384c7001462607e6e99e474d6271dd481d3f8f201cRoland Scheideggeridentity_context_create_surface(struct pipe_context *_pipe, 7394c7001462607e6e99e474d6271dd481d3f8f201cRoland Scheidegger struct pipe_resource *_resource, 7404c7001462607e6e99e474d6271dd481d3f8f201cRoland Scheidegger const struct pipe_surface *templ) 7414c7001462607e6e99e474d6271dd481d3f8f201cRoland Scheidegger{ 7424c7001462607e6e99e474d6271dd481d3f8f201cRoland Scheidegger struct identity_context *id_context = identity_context(_pipe); 7434c7001462607e6e99e474d6271dd481d3f8f201cRoland Scheidegger struct identity_resource *id_resource = identity_resource(_resource); 7444c7001462607e6e99e474d6271dd481d3f8f201cRoland Scheidegger struct pipe_context *pipe = id_context->pipe; 7454c7001462607e6e99e474d6271dd481d3f8f201cRoland Scheidegger struct pipe_resource *resource = id_resource->resource; 7464c7001462607e6e99e474d6271dd481d3f8f201cRoland Scheidegger struct pipe_surface *result; 7474c7001462607e6e99e474d6271dd481d3f8f201cRoland Scheidegger 7484c7001462607e6e99e474d6271dd481d3f8f201cRoland Scheidegger result = pipe->create_surface(pipe, 7494c7001462607e6e99e474d6271dd481d3f8f201cRoland Scheidegger resource, 7504c7001462607e6e99e474d6271dd481d3f8f201cRoland Scheidegger templ); 7514c7001462607e6e99e474d6271dd481d3f8f201cRoland Scheidegger 7524c7001462607e6e99e474d6271dd481d3f8f201cRoland Scheidegger if (result) 7534c7001462607e6e99e474d6271dd481d3f8f201cRoland Scheidegger return identity_surface_create(id_context, id_resource, result); 7544c7001462607e6e99e474d6271dd481d3f8f201cRoland Scheidegger return NULL; 7554c7001462607e6e99e474d6271dd481d3f8f201cRoland Scheidegger} 7564c7001462607e6e99e474d6271dd481d3f8f201cRoland Scheidegger 7574c7001462607e6e99e474d6271dd481d3f8f201cRoland Scheideggerstatic void 7584c7001462607e6e99e474d6271dd481d3f8f201cRoland Scheideggeridentity_context_surface_destroy(struct pipe_context *_pipe, 7594c7001462607e6e99e474d6271dd481d3f8f201cRoland Scheidegger struct pipe_surface *_surf) 7604c7001462607e6e99e474d6271dd481d3f8f201cRoland Scheidegger{ 7614c7001462607e6e99e474d6271dd481d3f8f201cRoland Scheidegger identity_surface_destroy(identity_context(_pipe), 7624c7001462607e6e99e474d6271dd481d3f8f201cRoland Scheidegger identity_surface(_surf)); 7634c7001462607e6e99e474d6271dd481d3f8f201cRoland Scheidegger} 7644c7001462607e6e99e474d6271dd481d3f8f201cRoland Scheidegger 765b43c182f19c6291c88420fa12714f952c2b461fbKeith Whitwellstatic struct pipe_transfer * 766287c94ea4987033f9c99a2f91c5750c9083504caKeith Whitwellidentity_context_get_transfer(struct pipe_context *_context, 767eda7c2506aff13726a265c70711d594ad8fddca3Jakob Bornecrantz struct pipe_resource *_resource, 7684c7001462607e6e99e474d6271dd481d3f8f201cRoland Scheidegger unsigned level, 769eda7c2506aff13726a265c70711d594ad8fddca3Jakob Bornecrantz unsigned usage, 770eda7c2506aff13726a265c70711d594ad8fddca3Jakob Bornecrantz const struct pipe_box *box) 771b43c182f19c6291c88420fa12714f952c2b461fbKeith Whitwell{ 772b43c182f19c6291c88420fa12714f952c2b461fbKeith Whitwell struct identity_context *id_context = identity_context(_context); 773287c94ea4987033f9c99a2f91c5750c9083504caKeith Whitwell struct identity_resource *id_resource = identity_resource(_resource); 774b43c182f19c6291c88420fa12714f952c2b461fbKeith Whitwell struct pipe_context *context = id_context->pipe; 77559b160d286e5848851848e09c87eb64cd2631c6bJakob Bornecrantz struct pipe_resource *resource = id_resource->resource; 776b43c182f19c6291c88420fa12714f952c2b461fbKeith Whitwell struct pipe_transfer *result; 777b43c182f19c6291c88420fa12714f952c2b461fbKeith Whitwell 778287c94ea4987033f9c99a2f91c5750c9083504caKeith Whitwell result = context->get_transfer(context, 77959b160d286e5848851848e09c87eb64cd2631c6bJakob Bornecrantz resource, 7804c7001462607e6e99e474d6271dd481d3f8f201cRoland Scheidegger level, 781eda7c2506aff13726a265c70711d594ad8fddca3Jakob Bornecrantz usage, 782eda7c2506aff13726a265c70711d594ad8fddca3Jakob Bornecrantz box); 783b43c182f19c6291c88420fa12714f952c2b461fbKeith Whitwell 784b43c182f19c6291c88420fa12714f952c2b461fbKeith Whitwell if (result) 785287c94ea4987033f9c99a2f91c5750c9083504caKeith Whitwell return identity_transfer_create(id_context, id_resource, result); 786b43c182f19c6291c88420fa12714f952c2b461fbKeith Whitwell return NULL; 787b43c182f19c6291c88420fa12714f952c2b461fbKeith Whitwell} 788b43c182f19c6291c88420fa12714f952c2b461fbKeith Whitwell 789b43c182f19c6291c88420fa12714f952c2b461fbKeith Whitwellstatic void 790287c94ea4987033f9c99a2f91c5750c9083504caKeith Whitwellidentity_context_transfer_destroy(struct pipe_context *_pipe, 791eda7c2506aff13726a265c70711d594ad8fddca3Jakob Bornecrantz struct pipe_transfer *_transfer) 792b43c182f19c6291c88420fa12714f952c2b461fbKeith Whitwell{ 793d35ecca5ee231c072687578642e0c22c6c0590b1Keith Whitwell identity_transfer_destroy(identity_context(_pipe), 794d35ecca5ee231c072687578642e0c22c6c0590b1Keith Whitwell identity_transfer(_transfer)); 795b43c182f19c6291c88420fa12714f952c2b461fbKeith Whitwell} 796b43c182f19c6291c88420fa12714f952c2b461fbKeith Whitwell 797b43c182f19c6291c88420fa12714f952c2b461fbKeith Whitwellstatic void * 798b43c182f19c6291c88420fa12714f952c2b461fbKeith Whitwellidentity_context_transfer_map(struct pipe_context *_context, 799eda7c2506aff13726a265c70711d594ad8fddca3Jakob Bornecrantz struct pipe_transfer *_transfer) 800b43c182f19c6291c88420fa12714f952c2b461fbKeith Whitwell{ 801b43c182f19c6291c88420fa12714f952c2b461fbKeith Whitwell struct identity_context *id_context = identity_context(_context); 802b43c182f19c6291c88420fa12714f952c2b461fbKeith Whitwell struct identity_transfer *id_transfer = identity_transfer(_transfer); 803b43c182f19c6291c88420fa12714f952c2b461fbKeith Whitwell struct pipe_context *context = id_context->pipe; 804b43c182f19c6291c88420fa12714f952c2b461fbKeith Whitwell struct pipe_transfer *transfer = id_transfer->transfer; 805b43c182f19c6291c88420fa12714f952c2b461fbKeith Whitwell 806b43c182f19c6291c88420fa12714f952c2b461fbKeith Whitwell return context->transfer_map(context, 807eda7c2506aff13726a265c70711d594ad8fddca3Jakob Bornecrantz transfer); 808b43c182f19c6291c88420fa12714f952c2b461fbKeith Whitwell} 809b43c182f19c6291c88420fa12714f952c2b461fbKeith Whitwell 810287c94ea4987033f9c99a2f91c5750c9083504caKeith Whitwell 811287c94ea4987033f9c99a2f91c5750c9083504caKeith Whitwell 812287c94ea4987033f9c99a2f91c5750c9083504caKeith Whitwellstatic void 813eda7c2506aff13726a265c70711d594ad8fddca3Jakob Bornecrantzidentity_context_transfer_flush_region(struct pipe_context *_context, 814eda7c2506aff13726a265c70711d594ad8fddca3Jakob Bornecrantz struct pipe_transfer *_transfer, 815eda7c2506aff13726a265c70711d594ad8fddca3Jakob Bornecrantz const struct pipe_box *box) 816287c94ea4987033f9c99a2f91c5750c9083504caKeith Whitwell{ 817287c94ea4987033f9c99a2f91c5750c9083504caKeith Whitwell struct identity_context *id_context = identity_context(_context); 818287c94ea4987033f9c99a2f91c5750c9083504caKeith Whitwell struct identity_transfer *id_transfer = identity_transfer(_transfer); 819287c94ea4987033f9c99a2f91c5750c9083504caKeith Whitwell struct pipe_context *context = id_context->pipe; 820287c94ea4987033f9c99a2f91c5750c9083504caKeith Whitwell struct pipe_transfer *transfer = id_transfer->transfer; 821287c94ea4987033f9c99a2f91c5750c9083504caKeith Whitwell 822287c94ea4987033f9c99a2f91c5750c9083504caKeith Whitwell context->transfer_flush_region(context, 823eda7c2506aff13726a265c70711d594ad8fddca3Jakob Bornecrantz transfer, 824eda7c2506aff13726a265c70711d594ad8fddca3Jakob Bornecrantz box); 825287c94ea4987033f9c99a2f91c5750c9083504caKeith Whitwell} 826287c94ea4987033f9c99a2f91c5750c9083504caKeith Whitwell 827287c94ea4987033f9c99a2f91c5750c9083504caKeith Whitwell 828b43c182f19c6291c88420fa12714f952c2b461fbKeith Whitwellstatic void 829b43c182f19c6291c88420fa12714f952c2b461fbKeith Whitwellidentity_context_transfer_unmap(struct pipe_context *_context, 830eda7c2506aff13726a265c70711d594ad8fddca3Jakob Bornecrantz struct pipe_transfer *_transfer) 831b43c182f19c6291c88420fa12714f952c2b461fbKeith Whitwell{ 832b43c182f19c6291c88420fa12714f952c2b461fbKeith Whitwell struct identity_context *id_context = identity_context(_context); 833b43c182f19c6291c88420fa12714f952c2b461fbKeith Whitwell struct identity_transfer *id_transfer = identity_transfer(_transfer); 834b43c182f19c6291c88420fa12714f952c2b461fbKeith Whitwell struct pipe_context *context = id_context->pipe; 835b43c182f19c6291c88420fa12714f952c2b461fbKeith Whitwell struct pipe_transfer *transfer = id_transfer->transfer; 836b43c182f19c6291c88420fa12714f952c2b461fbKeith Whitwell 837b43c182f19c6291c88420fa12714f952c2b461fbKeith Whitwell context->transfer_unmap(context, 838eda7c2506aff13726a265c70711d594ad8fddca3Jakob Bornecrantz transfer); 839b43c182f19c6291c88420fa12714f952c2b461fbKeith Whitwell} 840b43c182f19c6291c88420fa12714f952c2b461fbKeith Whitwell 841287c94ea4987033f9c99a2f91c5750c9083504caKeith Whitwell 842287c94ea4987033f9c99a2f91c5750c9083504caKeith Whitwellstatic void 843eda7c2506aff13726a265c70711d594ad8fddca3Jakob Bornecrantzidentity_context_transfer_inline_write(struct pipe_context *_context, 844eda7c2506aff13726a265c70711d594ad8fddca3Jakob Bornecrantz struct pipe_resource *_resource, 8454c7001462607e6e99e474d6271dd481d3f8f201cRoland Scheidegger unsigned level, 846eda7c2506aff13726a265c70711d594ad8fddca3Jakob Bornecrantz unsigned usage, 847eda7c2506aff13726a265c70711d594ad8fddca3Jakob Bornecrantz const struct pipe_box *box, 848eda7c2506aff13726a265c70711d594ad8fddca3Jakob Bornecrantz const void *data, 849eda7c2506aff13726a265c70711d594ad8fddca3Jakob Bornecrantz unsigned stride, 8504c7001462607e6e99e474d6271dd481d3f8f201cRoland Scheidegger unsigned layer_stride) 851287c94ea4987033f9c99a2f91c5750c9083504caKeith Whitwell{ 852287c94ea4987033f9c99a2f91c5750c9083504caKeith Whitwell struct identity_context *id_context = identity_context(_context); 853287c94ea4987033f9c99a2f91c5750c9083504caKeith Whitwell struct identity_resource *id_resource = identity_resource(_resource); 854287c94ea4987033f9c99a2f91c5750c9083504caKeith Whitwell struct pipe_context *context = id_context->pipe; 85559b160d286e5848851848e09c87eb64cd2631c6bJakob Bornecrantz struct pipe_resource *resource = id_resource->resource; 856287c94ea4987033f9c99a2f91c5750c9083504caKeith Whitwell 857287c94ea4987033f9c99a2f91c5750c9083504caKeith Whitwell context->transfer_inline_write(context, 85859b160d286e5848851848e09c87eb64cd2631c6bJakob Bornecrantz resource, 8594c7001462607e6e99e474d6271dd481d3f8f201cRoland Scheidegger level, 860eda7c2506aff13726a265c70711d594ad8fddca3Jakob Bornecrantz usage, 861eda7c2506aff13726a265c70711d594ad8fddca3Jakob Bornecrantz box, 862eda7c2506aff13726a265c70711d594ad8fddca3Jakob Bornecrantz data, 863eda7c2506aff13726a265c70711d594ad8fddca3Jakob Bornecrantz stride, 8644c7001462607e6e99e474d6271dd481d3f8f201cRoland Scheidegger layer_stride); 865287c94ea4987033f9c99a2f91c5750c9083504caKeith Whitwell} 866287c94ea4987033f9c99a2f91c5750c9083504caKeith Whitwell 867287c94ea4987033f9c99a2f91c5750c9083504caKeith Whitwell 868d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantzstruct pipe_context * 869d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantzidentity_context_create(struct pipe_screen *_screen, struct pipe_context *pipe) 870d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz{ 871d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct identity_context *id_pipe; 872d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz (void)identity_screen(_screen); 873d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 874d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz id_pipe = CALLOC_STRUCT(identity_context); 875d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz if (!id_pipe) { 876d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz return NULL; 877d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz } 878d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 879d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz id_pipe->base.screen = _screen; 8807f41f5447c8f9113c8956901e1c5fff6081ecd94Keith Whitwell id_pipe->base.priv = pipe->priv; /* expose wrapped data */ 881d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz id_pipe->base.draw = NULL; 882d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 883d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz id_pipe->base.destroy = identity_destroy; 8846d28bf917fb1d741d90fd3f05c22769376021fcaChia-I Wu id_pipe->base.draw_vbo = identity_draw_vbo; 885d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz id_pipe->base.create_query = identity_create_query; 886d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz id_pipe->base.destroy_query = identity_destroy_query; 887d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz id_pipe->base.begin_query = identity_begin_query; 888d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz id_pipe->base.end_query = identity_end_query; 889d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz id_pipe->base.get_query_result = identity_get_query_result; 890d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz id_pipe->base.create_blend_state = identity_create_blend_state; 891d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz id_pipe->base.bind_blend_state = identity_bind_blend_state; 892d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz id_pipe->base.delete_blend_state = identity_delete_blend_state; 893d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz id_pipe->base.create_sampler_state = identity_create_sampler_state; 894f2f7bd855af49752b1c77746542c62f1c529e953Michal Krol id_pipe->base.bind_fragment_sampler_states = identity_bind_fragment_sampler_states; 895f2f7bd855af49752b1c77746542c62f1c529e953Michal Krol id_pipe->base.bind_vertex_sampler_states = identity_bind_vertex_sampler_states; 896d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz id_pipe->base.delete_sampler_state = identity_delete_sampler_state; 897d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz id_pipe->base.create_rasterizer_state = identity_create_rasterizer_state; 898d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz id_pipe->base.bind_rasterizer_state = identity_bind_rasterizer_state; 899d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz id_pipe->base.delete_rasterizer_state = identity_delete_rasterizer_state; 900d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz id_pipe->base.create_depth_stencil_alpha_state = identity_create_depth_stencil_alpha_state; 901d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz id_pipe->base.bind_depth_stencil_alpha_state = identity_bind_depth_stencil_alpha_state; 902d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz id_pipe->base.delete_depth_stencil_alpha_state = identity_delete_depth_stencil_alpha_state; 903d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz id_pipe->base.create_fs_state = identity_create_fs_state; 904d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz id_pipe->base.bind_fs_state = identity_bind_fs_state; 905d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz id_pipe->base.delete_fs_state = identity_delete_fs_state; 906d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz id_pipe->base.create_vs_state = identity_create_vs_state; 907d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz id_pipe->base.bind_vs_state = identity_bind_vs_state; 908d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz id_pipe->base.delete_vs_state = identity_delete_vs_state; 909881be308360ec8019f17bc970bece23e9395134fRoland Scheidegger id_pipe->base.create_vertex_elements_state = identity_create_vertex_elements_state; 910881be308360ec8019f17bc970bece23e9395134fRoland Scheidegger id_pipe->base.bind_vertex_elements_state = identity_bind_vertex_elements_state; 911881be308360ec8019f17bc970bece23e9395134fRoland Scheidegger id_pipe->base.delete_vertex_elements_state = identity_delete_vertex_elements_state; 912d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz id_pipe->base.set_blend_color = identity_set_blend_color; 9134ea2f61e5ae556fa4141cd226ecbf1521e9f16ffRoland Scheidegger id_pipe->base.set_stencil_ref = identity_set_stencil_ref; 914d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz id_pipe->base.set_clip_state = identity_set_clip_state; 91543234cee40c48e14a3eab4268181d9b0b2b7cf79Roland Scheidegger id_pipe->base.set_sample_mask = identity_set_sample_mask; 916d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz id_pipe->base.set_constant_buffer = identity_set_constant_buffer; 917d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz id_pipe->base.set_framebuffer_state = identity_set_framebuffer_state; 918d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz id_pipe->base.set_polygon_stipple = identity_set_polygon_stipple; 919d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz id_pipe->base.set_scissor_state = identity_set_scissor_state; 920d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz id_pipe->base.set_viewport_state = identity_set_viewport_state; 921f6106566081978f663cf08e54bb8908cb58a5316Michal Krol id_pipe->base.set_fragment_sampler_views = identity_set_fragment_sampler_views; 922f6106566081978f663cf08e54bb8908cb58a5316Michal Krol id_pipe->base.set_vertex_sampler_views = identity_set_vertex_sampler_views; 923d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz id_pipe->base.set_vertex_buffers = identity_set_vertex_buffers; 9246d28bf917fb1d741d90fd3f05c22769376021fcaChia-I Wu id_pipe->base.set_index_buffer = identity_set_index_buffer; 925fd578be828e1dd7c25160e7748b30b1421f4d0c7Roland Scheidegger id_pipe->base.resource_copy_region = identity_resource_copy_region; 926d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz id_pipe->base.clear = identity_clear; 927a6e5c6c000df8655de3b41d5809547bb41c88c23Roland Scheidegger id_pipe->base.clear_render_target = identity_clear_render_target; 928a6e5c6c000df8655de3b41d5809547bb41c88c23Roland Scheidegger id_pipe->base.clear_depth_stencil = identity_clear_depth_stencil; 929d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz id_pipe->base.flush = identity_flush; 9304c7001462607e6e99e474d6271dd481d3f8f201cRoland Scheidegger id_pipe->base.create_surface = identity_context_create_surface; 9314c7001462607e6e99e474d6271dd481d3f8f201cRoland Scheidegger id_pipe->base.surface_destroy = identity_context_surface_destroy; 932c2c1f60391113490f4f90efb2786544c599ac991Jakob Bornecrantz id_pipe->base.create_sampler_view = identity_context_create_sampler_view; 933c2c1f60391113490f4f90efb2786544c599ac991Jakob Bornecrantz id_pipe->base.sampler_view_destroy = identity_context_sampler_view_destroy; 934287c94ea4987033f9c99a2f91c5750c9083504caKeith Whitwell id_pipe->base.get_transfer = identity_context_get_transfer; 935287c94ea4987033f9c99a2f91c5750c9083504caKeith Whitwell id_pipe->base.transfer_destroy = identity_context_transfer_destroy; 936b43c182f19c6291c88420fa12714f952c2b461fbKeith Whitwell id_pipe->base.transfer_map = identity_context_transfer_map; 937b43c182f19c6291c88420fa12714f952c2b461fbKeith Whitwell id_pipe->base.transfer_unmap = identity_context_transfer_unmap; 938287c94ea4987033f9c99a2f91c5750c9083504caKeith Whitwell id_pipe->base.transfer_flush_region = identity_context_transfer_flush_region; 939287c94ea4987033f9c99a2f91c5750c9083504caKeith Whitwell id_pipe->base.transfer_inline_write = identity_context_transfer_inline_write; 940d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 941d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz id_pipe->pipe = pipe; 942d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 943d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz return &id_pipe->base; 944d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz} 945