id_context.c revision 25296a3ed380f2a2179a9f435645a7ccaf10c04c
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 49d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantzidentity_draw_arrays(struct pipe_context *_pipe, 50d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz unsigned prim, 51d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz unsigned start, 52d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz unsigned count) 53d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz{ 54d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct identity_context *id_pipe = identity_context(_pipe); 55d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct pipe_context *pipe = id_pipe->pipe; 56d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 5709e785ee04c80c2bdf27245be7dafc79cce5b0adKeith Whitwell pipe->draw_arrays(pipe, 5809e785ee04c80c2bdf27245be7dafc79cce5b0adKeith Whitwell prim, 5909e785ee04c80c2bdf27245be7dafc79cce5b0adKeith Whitwell start, 6009e785ee04c80c2bdf27245be7dafc79cce5b0adKeith Whitwell count); 61d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz} 62d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 6309e785ee04c80c2bdf27245be7dafc79cce5b0adKeith Whitwellstatic void 64d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantzidentity_draw_elements(struct pipe_context *_pipe, 65287c94ea4987033f9c99a2f91c5750c9083504caKeith Whitwell struct pipe_resource *_indexResource, 66d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz unsigned indexSize, 67382e9cc07b9193924b0eaf840a4d34cade2c7d92José Fonseca int indexBias, 68d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz unsigned prim, 69d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz unsigned start, 70d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz unsigned count) 71d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz{ 72d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct identity_context *id_pipe = identity_context(_pipe); 73287c94ea4987033f9c99a2f91c5750c9083504caKeith Whitwell struct identity_resource *id_resource = identity_resource(_indexResource); 74d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct pipe_context *pipe = id_pipe->pipe; 75287c94ea4987033f9c99a2f91c5750c9083504caKeith Whitwell struct pipe_resource *indexResource = id_resource->resource; 76d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 7709e785ee04c80c2bdf27245be7dafc79cce5b0adKeith Whitwell pipe->draw_elements(pipe, 78287c94ea4987033f9c99a2f91c5750c9083504caKeith Whitwell indexResource, 7909e785ee04c80c2bdf27245be7dafc79cce5b0adKeith Whitwell indexSize, 80382e9cc07b9193924b0eaf840a4d34cade2c7d92José Fonseca indexBias, 8109e785ee04c80c2bdf27245be7dafc79cce5b0adKeith Whitwell prim, 8209e785ee04c80c2bdf27245be7dafc79cce5b0adKeith Whitwell start, 8309e785ee04c80c2bdf27245be7dafc79cce5b0adKeith Whitwell count); 84d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz} 85d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 8609e785ee04c80c2bdf27245be7dafc79cce5b0adKeith Whitwellstatic void 87d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantzidentity_draw_range_elements(struct pipe_context *_pipe, 88287c94ea4987033f9c99a2f91c5750c9083504caKeith Whitwell struct pipe_resource *_indexResource, 89d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz unsigned indexSize, 90382e9cc07b9193924b0eaf840a4d34cade2c7d92José Fonseca int indexBias, 91d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz unsigned minIndex, 92d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz unsigned maxIndex, 93d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz unsigned mode, 94d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz unsigned start, 95d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz unsigned count) 96d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz{ 97d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct identity_context *id_pipe = identity_context(_pipe); 98287c94ea4987033f9c99a2f91c5750c9083504caKeith Whitwell struct identity_resource *id_resource = identity_resource(_indexResource); 99d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct pipe_context *pipe = id_pipe->pipe; 100287c94ea4987033f9c99a2f91c5750c9083504caKeith Whitwell struct pipe_resource *indexResource = id_resource->resource; 101d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 10209e785ee04c80c2bdf27245be7dafc79cce5b0adKeith Whitwell pipe->draw_range_elements(pipe, 103287c94ea4987033f9c99a2f91c5750c9083504caKeith Whitwell indexResource, 10409e785ee04c80c2bdf27245be7dafc79cce5b0adKeith Whitwell indexSize, 105382e9cc07b9193924b0eaf840a4d34cade2c7d92José Fonseca indexBias, 10609e785ee04c80c2bdf27245be7dafc79cce5b0adKeith Whitwell minIndex, 10709e785ee04c80c2bdf27245be7dafc79cce5b0adKeith Whitwell maxIndex, 10809e785ee04c80c2bdf27245be7dafc79cce5b0adKeith Whitwell mode, 10909e785ee04c80c2bdf27245be7dafc79cce5b0adKeith Whitwell start, 11009e785ee04c80c2bdf27245be7dafc79cce5b0adKeith Whitwell count); 111d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz} 112d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 113d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantzstatic struct pipe_query * 114d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantzidentity_create_query(struct pipe_context *_pipe, 115d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz unsigned query_type) 116d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz{ 117d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct identity_context *id_pipe = identity_context(_pipe); 118d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct pipe_context *pipe = id_pipe->pipe; 119d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 120d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz return pipe->create_query(pipe, 121d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz query_type); 122d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz} 123d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 124d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantzstatic void 125d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantzidentity_destroy_query(struct pipe_context *_pipe, 126d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct pipe_query *query) 127d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz{ 128d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct identity_context *id_pipe = identity_context(_pipe); 129d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct pipe_context *pipe = id_pipe->pipe; 130d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 131d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz pipe->destroy_query(pipe, 132d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz query); 133d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz} 134d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 135d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantzstatic void 136d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantzidentity_begin_query(struct pipe_context *_pipe, 137d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct pipe_query *query) 138d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz{ 139d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct identity_context *id_pipe = identity_context(_pipe); 140d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct pipe_context *pipe = id_pipe->pipe; 141d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 142d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz pipe->begin_query(pipe, 143d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz query); 144d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz} 145d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 146d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantzstatic void 147d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantzidentity_end_query(struct pipe_context *_pipe, 148d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct pipe_query *query) 149d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz{ 150d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct identity_context *id_pipe = identity_context(_pipe); 151d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct pipe_context *pipe = id_pipe->pipe; 152d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 153d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz pipe->end_query(pipe, 154d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz query); 155d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz} 156d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 157d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantzstatic boolean 158d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantzidentity_get_query_result(struct pipe_context *_pipe, 159d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct pipe_query *query, 160d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz boolean wait, 161d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz uint64_t *result) 162d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz{ 163d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct identity_context *id_pipe = identity_context(_pipe); 164d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct pipe_context *pipe = id_pipe->pipe; 165d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 166d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz return pipe->get_query_result(pipe, 167d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz query, 168d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz wait, 169d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz result); 170d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz} 171d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 172d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantzstatic void * 173d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantzidentity_create_blend_state(struct pipe_context *_pipe, 174d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz const struct pipe_blend_state *blend) 175d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz{ 176d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct identity_context *id_pipe = identity_context(_pipe); 177d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct pipe_context *pipe = id_pipe->pipe; 178d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 179d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz return pipe->create_blend_state(pipe, 180d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz blend); 181d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz} 182d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 183d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantzstatic void 184d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantzidentity_bind_blend_state(struct pipe_context *_pipe, 185d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz void *blend) 186d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz{ 187d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct identity_context *id_pipe = identity_context(_pipe); 188d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct pipe_context *pipe = id_pipe->pipe; 189d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 190d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz pipe->bind_blend_state(pipe, 191d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz blend); 192d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz} 193d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 194d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantzstatic void 195d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantzidentity_delete_blend_state(struct pipe_context *_pipe, 196d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz void *blend) 197d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz{ 198d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct identity_context *id_pipe = identity_context(_pipe); 199d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct pipe_context *pipe = id_pipe->pipe; 200d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 201d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz pipe->delete_blend_state(pipe, 202d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz blend); 203d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz} 204d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 205d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantzstatic void * 206d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantzidentity_create_sampler_state(struct pipe_context *_pipe, 207d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz const struct pipe_sampler_state *sampler) 208d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz{ 209d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct identity_context *id_pipe = identity_context(_pipe); 210d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct pipe_context *pipe = id_pipe->pipe; 211d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 212d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz return pipe->create_sampler_state(pipe, 213d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz sampler); 214d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz} 215d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 216d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantzstatic void 217f2f7bd855af49752b1c77746542c62f1c529e953Michal Krolidentity_bind_fragment_sampler_states(struct pipe_context *_pipe, 218f2f7bd855af49752b1c77746542c62f1c529e953Michal Krol unsigned num_samplers, 219f2f7bd855af49752b1c77746542c62f1c529e953Michal Krol void **samplers) 220d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz{ 221d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct identity_context *id_pipe = identity_context(_pipe); 222d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct pipe_context *pipe = id_pipe->pipe; 223d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 224f0d3abf3834d3ae6107e66b61d8660e6c09a0a99Michal Krol pipe->bind_fragment_sampler_states(pipe, 225f2f7bd855af49752b1c77746542c62f1c529e953Michal Krol num_samplers, 226f0d3abf3834d3ae6107e66b61d8660e6c09a0a99Michal Krol samplers); 227d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz} 228d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 229d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantzstatic void 230f2f7bd855af49752b1c77746542c62f1c529e953Michal Krolidentity_bind_vertex_sampler_states(struct pipe_context *_pipe, 231f2f7bd855af49752b1c77746542c62f1c529e953Michal Krol unsigned num_samplers, 232f2f7bd855af49752b1c77746542c62f1c529e953Michal Krol void **samplers) 233f2f7bd855af49752b1c77746542c62f1c529e953Michal Krol{ 234f2f7bd855af49752b1c77746542c62f1c529e953Michal Krol struct identity_context *id_pipe = identity_context(_pipe); 235f2f7bd855af49752b1c77746542c62f1c529e953Michal Krol struct pipe_context *pipe = id_pipe->pipe; 236f2f7bd855af49752b1c77746542c62f1c529e953Michal Krol 237f2f7bd855af49752b1c77746542c62f1c529e953Michal Krol pipe->bind_vertex_sampler_states(pipe, 238f2f7bd855af49752b1c77746542c62f1c529e953Michal Krol num_samplers, 239f2f7bd855af49752b1c77746542c62f1c529e953Michal Krol samplers); 240f2f7bd855af49752b1c77746542c62f1c529e953Michal Krol} 241f2f7bd855af49752b1c77746542c62f1c529e953Michal Krol 242f2f7bd855af49752b1c77746542c62f1c529e953Michal Krolstatic void 243d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantzidentity_delete_sampler_state(struct pipe_context *_pipe, 244d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz void *sampler) 245d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz{ 246d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct identity_context *id_pipe = identity_context(_pipe); 247d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct pipe_context *pipe = id_pipe->pipe; 248d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 249d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz pipe->delete_sampler_state(pipe, 250d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz sampler); 251d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz} 252d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 253d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantzstatic void * 254d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantzidentity_create_rasterizer_state(struct pipe_context *_pipe, 255d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz const struct pipe_rasterizer_state *rasterizer) 256d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz{ 257d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct identity_context *id_pipe = identity_context(_pipe); 258d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct pipe_context *pipe = id_pipe->pipe; 259d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 260d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz return pipe->create_rasterizer_state(pipe, 261d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz rasterizer); 262d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz} 263d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 264d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantzstatic void 265d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantzidentity_bind_rasterizer_state(struct pipe_context *_pipe, 266d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz void *rasterizer) 267d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz{ 268d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct identity_context *id_pipe = identity_context(_pipe); 269d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct pipe_context *pipe = id_pipe->pipe; 270d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 271d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz pipe->bind_rasterizer_state(pipe, 272d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz rasterizer); 273d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz} 274d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 275d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantzstatic void 276d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantzidentity_delete_rasterizer_state(struct pipe_context *_pipe, 277d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz void *rasterizer) 278d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz{ 279d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct identity_context *id_pipe = identity_context(_pipe); 280d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct pipe_context *pipe = id_pipe->pipe; 281d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 282d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz pipe->delete_rasterizer_state(pipe, 283d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz rasterizer); 284d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz} 285d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 286d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantzstatic void * 287d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantzidentity_create_depth_stencil_alpha_state(struct pipe_context *_pipe, 288d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz const struct pipe_depth_stencil_alpha_state *depth_stencil_alpha) 289d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz{ 290d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct identity_context *id_pipe = identity_context(_pipe); 291d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct pipe_context *pipe = id_pipe->pipe; 292d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 293d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz return pipe->create_depth_stencil_alpha_state(pipe, 294d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz depth_stencil_alpha); 295d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz} 296d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 297d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantzstatic void 298d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantzidentity_bind_depth_stencil_alpha_state(struct pipe_context *_pipe, 299d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz void *depth_stencil_alpha) 300d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz{ 301d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct identity_context *id_pipe = identity_context(_pipe); 302d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct pipe_context *pipe = id_pipe->pipe; 303d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 304d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz pipe->bind_depth_stencil_alpha_state(pipe, 305d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz depth_stencil_alpha); 306d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz} 307d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 308d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantzstatic void 309d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantzidentity_delete_depth_stencil_alpha_state(struct pipe_context *_pipe, 310d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz void *depth_stencil_alpha) 311d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz{ 312d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct identity_context *id_pipe = identity_context(_pipe); 313d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct pipe_context *pipe = id_pipe->pipe; 314d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 315d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz pipe->delete_depth_stencil_alpha_state(pipe, 316d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz depth_stencil_alpha); 317d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz} 318d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 319d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantzstatic void * 320d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantzidentity_create_fs_state(struct pipe_context *_pipe, 321d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz const struct pipe_shader_state *fs) 322d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz{ 323d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct identity_context *id_pipe = identity_context(_pipe); 324d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct pipe_context *pipe = id_pipe->pipe; 325d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 326d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz return pipe->create_fs_state(pipe, 327d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz fs); 328d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz} 329d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 330d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantzstatic void 331d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantzidentity_bind_fs_state(struct pipe_context *_pipe, 332d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz void *fs) 333d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz{ 334d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct identity_context *id_pipe = identity_context(_pipe); 335d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct pipe_context *pipe = id_pipe->pipe; 336d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 337d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz pipe->bind_fs_state(pipe, 338d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz fs); 339d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz} 340d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 341d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantzstatic void 342d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantzidentity_delete_fs_state(struct pipe_context *_pipe, 343d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz void *fs) 344d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz{ 345d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct identity_context *id_pipe = identity_context(_pipe); 346d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct pipe_context *pipe = id_pipe->pipe; 347d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 348d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz pipe->delete_fs_state(pipe, 349d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz fs); 350d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz} 351d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 352d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantzstatic void * 353d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantzidentity_create_vs_state(struct pipe_context *_pipe, 354d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz const struct pipe_shader_state *vs) 355d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz{ 356d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct identity_context *id_pipe = identity_context(_pipe); 357d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct pipe_context *pipe = id_pipe->pipe; 358d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 359d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz return pipe->create_vs_state(pipe, 360d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz vs); 361d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz} 362d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 363d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantzstatic void 364d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantzidentity_bind_vs_state(struct pipe_context *_pipe, 365d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz void *vs) 366d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz{ 367d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct identity_context *id_pipe = identity_context(_pipe); 368d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct pipe_context *pipe = id_pipe->pipe; 369d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 370d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz pipe->bind_vs_state(pipe, 371d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz vs); 372d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz} 373d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 374d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantzstatic void 375d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantzidentity_delete_vs_state(struct pipe_context *_pipe, 376d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz void *vs) 377d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz{ 378d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct identity_context *id_pipe = identity_context(_pipe); 379d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct pipe_context *pipe = id_pipe->pipe; 380d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 381d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz pipe->delete_vs_state(pipe, 382d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz vs); 383d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz} 384d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 385881be308360ec8019f17bc970bece23e9395134fRoland Scheidegger 3864d02534628e5fd4cd1231c5d742928b34067f25cRoland Scheideggerstatic void * 387881be308360ec8019f17bc970bece23e9395134fRoland Scheideggeridentity_create_vertex_elements_state(struct pipe_context *_pipe, 388881be308360ec8019f17bc970bece23e9395134fRoland Scheidegger unsigned num_elements, 389881be308360ec8019f17bc970bece23e9395134fRoland Scheidegger const struct pipe_vertex_element *vertex_elements) 390881be308360ec8019f17bc970bece23e9395134fRoland Scheidegger{ 391881be308360ec8019f17bc970bece23e9395134fRoland Scheidegger struct identity_context *id_pipe = identity_context(_pipe); 392881be308360ec8019f17bc970bece23e9395134fRoland Scheidegger struct pipe_context *pipe = id_pipe->pipe; 393881be308360ec8019f17bc970bece23e9395134fRoland Scheidegger 3944d02534628e5fd4cd1231c5d742928b34067f25cRoland Scheidegger return pipe->create_vertex_elements_state(pipe, 3954d02534628e5fd4cd1231c5d742928b34067f25cRoland Scheidegger num_elements, 3964d02534628e5fd4cd1231c5d742928b34067f25cRoland Scheidegger vertex_elements); 397881be308360ec8019f17bc970bece23e9395134fRoland Scheidegger} 398881be308360ec8019f17bc970bece23e9395134fRoland Scheidegger 399881be308360ec8019f17bc970bece23e9395134fRoland Scheideggerstatic void 400881be308360ec8019f17bc970bece23e9395134fRoland Scheideggeridentity_bind_vertex_elements_state(struct pipe_context *_pipe, 401881be308360ec8019f17bc970bece23e9395134fRoland Scheidegger void *velems) 402881be308360ec8019f17bc970bece23e9395134fRoland Scheidegger{ 403881be308360ec8019f17bc970bece23e9395134fRoland Scheidegger struct identity_context *id_pipe = identity_context(_pipe); 404881be308360ec8019f17bc970bece23e9395134fRoland Scheidegger struct pipe_context *pipe = id_pipe->pipe; 405881be308360ec8019f17bc970bece23e9395134fRoland Scheidegger 406881be308360ec8019f17bc970bece23e9395134fRoland Scheidegger pipe->bind_vertex_elements_state(pipe, 407881be308360ec8019f17bc970bece23e9395134fRoland Scheidegger velems); 408881be308360ec8019f17bc970bece23e9395134fRoland Scheidegger} 409881be308360ec8019f17bc970bece23e9395134fRoland Scheidegger 410881be308360ec8019f17bc970bece23e9395134fRoland Scheideggerstatic void 411881be308360ec8019f17bc970bece23e9395134fRoland Scheideggeridentity_delete_vertex_elements_state(struct pipe_context *_pipe, 412881be308360ec8019f17bc970bece23e9395134fRoland Scheidegger void *velems) 413881be308360ec8019f17bc970bece23e9395134fRoland Scheidegger{ 414881be308360ec8019f17bc970bece23e9395134fRoland Scheidegger struct identity_context *id_pipe = identity_context(_pipe); 415881be308360ec8019f17bc970bece23e9395134fRoland Scheidegger struct pipe_context *pipe = id_pipe->pipe; 416881be308360ec8019f17bc970bece23e9395134fRoland Scheidegger 417881be308360ec8019f17bc970bece23e9395134fRoland Scheidegger pipe->delete_vertex_elements_state(pipe, 418881be308360ec8019f17bc970bece23e9395134fRoland Scheidegger velems); 419881be308360ec8019f17bc970bece23e9395134fRoland Scheidegger} 420881be308360ec8019f17bc970bece23e9395134fRoland Scheidegger 421d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantzstatic void 422d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantzidentity_set_blend_color(struct pipe_context *_pipe, 423d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz const struct pipe_blend_color *blend_color) 424d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz{ 425d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct identity_context *id_pipe = identity_context(_pipe); 426d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct pipe_context *pipe = id_pipe->pipe; 427d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 428d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz pipe->set_blend_color(pipe, 429d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz blend_color); 430d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz} 431d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 432d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantzstatic void 4334ea2f61e5ae556fa4141cd226ecbf1521e9f16ffRoland Scheideggeridentity_set_stencil_ref(struct pipe_context *_pipe, 4344ea2f61e5ae556fa4141cd226ecbf1521e9f16ffRoland Scheidegger const struct pipe_stencil_ref *stencil_ref) 4354ea2f61e5ae556fa4141cd226ecbf1521e9f16ffRoland Scheidegger{ 4364ea2f61e5ae556fa4141cd226ecbf1521e9f16ffRoland Scheidegger struct identity_context *id_pipe = identity_context(_pipe); 4374ea2f61e5ae556fa4141cd226ecbf1521e9f16ffRoland Scheidegger struct pipe_context *pipe = id_pipe->pipe; 4384ea2f61e5ae556fa4141cd226ecbf1521e9f16ffRoland Scheidegger 4394ea2f61e5ae556fa4141cd226ecbf1521e9f16ffRoland Scheidegger pipe->set_stencil_ref(pipe, 4404ea2f61e5ae556fa4141cd226ecbf1521e9f16ffRoland Scheidegger stencil_ref); 4414ea2f61e5ae556fa4141cd226ecbf1521e9f16ffRoland Scheidegger} 4424ea2f61e5ae556fa4141cd226ecbf1521e9f16ffRoland Scheidegger 4434ea2f61e5ae556fa4141cd226ecbf1521e9f16ffRoland Scheideggerstatic void 444d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantzidentity_set_clip_state(struct pipe_context *_pipe, 445d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz const struct pipe_clip_state *clip) 446d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz{ 447d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct identity_context *id_pipe = identity_context(_pipe); 448d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct pipe_context *pipe = id_pipe->pipe; 449d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 450d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz pipe->set_clip_state(pipe, 451d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz clip); 452d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz} 453d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 454d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantzstatic void 45543234cee40c48e14a3eab4268181d9b0b2b7cf79Roland Scheideggeridentity_set_sample_mask(struct pipe_context *_pipe, 45643234cee40c48e14a3eab4268181d9b0b2b7cf79Roland Scheidegger unsigned sample_mask) 45743234cee40c48e14a3eab4268181d9b0b2b7cf79Roland Scheidegger{ 45843234cee40c48e14a3eab4268181d9b0b2b7cf79Roland Scheidegger struct identity_context *id_pipe = identity_context(_pipe); 45943234cee40c48e14a3eab4268181d9b0b2b7cf79Roland Scheidegger struct pipe_context *pipe = id_pipe->pipe; 46043234cee40c48e14a3eab4268181d9b0b2b7cf79Roland Scheidegger 46143234cee40c48e14a3eab4268181d9b0b2b7cf79Roland Scheidegger pipe->set_sample_mask(pipe, 46243234cee40c48e14a3eab4268181d9b0b2b7cf79Roland Scheidegger sample_mask); 46343234cee40c48e14a3eab4268181d9b0b2b7cf79Roland Scheidegger} 46443234cee40c48e14a3eab4268181d9b0b2b7cf79Roland Scheidegger 46543234cee40c48e14a3eab4268181d9b0b2b7cf79Roland Scheideggerstatic void 466d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantzidentity_set_constant_buffer(struct pipe_context *_pipe, 467d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz uint shader, 468d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz uint index, 469287c94ea4987033f9c99a2f91c5750c9083504caKeith Whitwell struct pipe_resource *_resource) 470d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz{ 471d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct identity_context *id_pipe = identity_context(_pipe); 472d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct pipe_context *pipe = id_pipe->pipe; 473287c94ea4987033f9c99a2f91c5750c9083504caKeith Whitwell struct pipe_resource *unwrapped_resource; 474287c94ea4987033f9c99a2f91c5750c9083504caKeith Whitwell struct pipe_resource *resource = NULL; 475d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 4761278507e3bf2e83c7027820a0d313de267a440ffRoland Scheidegger /* XXX hmm? unwrap the input state */ 477287c94ea4987033f9c99a2f91c5750c9083504caKeith Whitwell if (_resource) { 478287c94ea4987033f9c99a2f91c5750c9083504caKeith Whitwell unwrapped_resource = identity_resource_unwrap(_resource); 479287c94ea4987033f9c99a2f91c5750c9083504caKeith Whitwell resource = unwrapped_resource; 480d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz } 481d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 482d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz pipe->set_constant_buffer(pipe, 483d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz shader, 484d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz index, 485287c94ea4987033f9c99a2f91c5750c9083504caKeith Whitwell resource); 486d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz} 487d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 488d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantzstatic void 489d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantzidentity_set_framebuffer_state(struct pipe_context *_pipe, 490d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz const struct pipe_framebuffer_state *_state) 491d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz{ 492d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct identity_context *id_pipe = identity_context(_pipe); 493d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct pipe_context *pipe = id_pipe->pipe; 494d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct pipe_framebuffer_state unwrapped_state; 495d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct pipe_framebuffer_state *state = NULL; 496d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz unsigned i; 497d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 498d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz /* unwrap the input state */ 499d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz if (_state) { 500d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz memcpy(&unwrapped_state, _state, sizeof(unwrapped_state)); 501d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz for(i = 0; i < _state->nr_cbufs; i++) 502d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz unwrapped_state.cbufs[i] = identity_surface_unwrap(_state->cbufs[i]); 503d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz for (; i < PIPE_MAX_COLOR_BUFS; i++) 504d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz unwrapped_state.cbufs[i] = NULL; 505d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz unwrapped_state.zsbuf = identity_surface_unwrap(_state->zsbuf); 506d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz state = &unwrapped_state; 507d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz } 508d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 509d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz pipe->set_framebuffer_state(pipe, 510d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz state); 511d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz} 512d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 513d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantzstatic void 514d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantzidentity_set_polygon_stipple(struct pipe_context *_pipe, 515d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz const struct pipe_poly_stipple *poly_stipple) 516d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz{ 517d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct identity_context *id_pipe = identity_context(_pipe); 518d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct pipe_context *pipe = id_pipe->pipe; 519d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 520d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz pipe->set_polygon_stipple(pipe, 521d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz poly_stipple); 522d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz} 523d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 524d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantzstatic void 525d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantzidentity_set_scissor_state(struct pipe_context *_pipe, 526d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz const struct pipe_scissor_state *scissor) 527d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz{ 528d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct identity_context *id_pipe = identity_context(_pipe); 529d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct pipe_context *pipe = id_pipe->pipe; 530d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 531d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz pipe->set_scissor_state(pipe, 532d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz scissor); 533d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz} 534d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 535d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantzstatic void 536d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantzidentity_set_viewport_state(struct pipe_context *_pipe, 537d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz const struct pipe_viewport_state *viewport) 538d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz{ 539d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct identity_context *id_pipe = identity_context(_pipe); 540d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct pipe_context *pipe = id_pipe->pipe; 541d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 542d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz pipe->set_viewport_state(pipe, 543d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz viewport); 544d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz} 545d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 546d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantzstatic void 547f6106566081978f663cf08e54bb8908cb58a5316Michal Krolidentity_set_fragment_sampler_views(struct pipe_context *_pipe, 548f6106566081978f663cf08e54bb8908cb58a5316Michal Krol unsigned num, 549f6106566081978f663cf08e54bb8908cb58a5316Michal Krol struct pipe_sampler_view **_views) 550d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz{ 551d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct identity_context *id_pipe = identity_context(_pipe); 552d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct pipe_context *pipe = id_pipe->pipe; 553f6106566081978f663cf08e54bb8908cb58a5316Michal Krol struct pipe_sampler_view *unwrapped_views[PIPE_MAX_SAMPLERS]; 554f6106566081978f663cf08e54bb8908cb58a5316Michal Krol struct pipe_sampler_view **views = NULL; 555d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz unsigned i; 556d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 557f6106566081978f663cf08e54bb8908cb58a5316Michal Krol if (_views) { 558f6106566081978f663cf08e54bb8908cb58a5316Michal Krol for (i = 0; i < num; i++) 559f6106566081978f663cf08e54bb8908cb58a5316Michal Krol unwrapped_views[i] = identity_sampler_view_unwrap(_views[i]); 560d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz for (; i < PIPE_MAX_SAMPLERS; i++) 561f6106566081978f663cf08e54bb8908cb58a5316Michal Krol unwrapped_views[i] = NULL; 562d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 563f6106566081978f663cf08e54bb8908cb58a5316Michal Krol views = unwrapped_views; 564d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz } 565d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 566f6106566081978f663cf08e54bb8908cb58a5316Michal Krol pipe->set_fragment_sampler_views(pipe, num, views); 567d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz} 568d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 569d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantzstatic void 570f6106566081978f663cf08e54bb8908cb58a5316Michal Krolidentity_set_vertex_sampler_views(struct pipe_context *_pipe, 571f6106566081978f663cf08e54bb8908cb58a5316Michal Krol unsigned num, 572f6106566081978f663cf08e54bb8908cb58a5316Michal Krol struct pipe_sampler_view **_views) 573f2f7bd855af49752b1c77746542c62f1c529e953Michal Krol{ 574f2f7bd855af49752b1c77746542c62f1c529e953Michal Krol struct identity_context *id_pipe = identity_context(_pipe); 575f2f7bd855af49752b1c77746542c62f1c529e953Michal Krol struct pipe_context *pipe = id_pipe->pipe; 576f6106566081978f663cf08e54bb8908cb58a5316Michal Krol struct pipe_sampler_view *unwrapped_views[PIPE_MAX_VERTEX_SAMPLERS]; 577f6106566081978f663cf08e54bb8908cb58a5316Michal Krol struct pipe_sampler_view **views = NULL; 578f2f7bd855af49752b1c77746542c62f1c529e953Michal Krol unsigned i; 579f2f7bd855af49752b1c77746542c62f1c529e953Michal Krol 580f6106566081978f663cf08e54bb8908cb58a5316Michal Krol if (_views) { 581f6106566081978f663cf08e54bb8908cb58a5316Michal Krol for (i = 0; i < num; i++) 582f6106566081978f663cf08e54bb8908cb58a5316Michal Krol unwrapped_views[i] = identity_sampler_view_unwrap(_views[i]); 583f2f7bd855af49752b1c77746542c62f1c529e953Michal Krol for (; i < PIPE_MAX_VERTEX_SAMPLERS; i++) 584f6106566081978f663cf08e54bb8908cb58a5316Michal Krol unwrapped_views[i] = NULL; 585f2f7bd855af49752b1c77746542c62f1c529e953Michal Krol 586f6106566081978f663cf08e54bb8908cb58a5316Michal Krol views = unwrapped_views; 587f2f7bd855af49752b1c77746542c62f1c529e953Michal Krol } 588f2f7bd855af49752b1c77746542c62f1c529e953Michal Krol 589f6106566081978f663cf08e54bb8908cb58a5316Michal Krol pipe->set_vertex_sampler_views(pipe, num, views); 590f2f7bd855af49752b1c77746542c62f1c529e953Michal Krol} 591f2f7bd855af49752b1c77746542c62f1c529e953Michal Krol 592f2f7bd855af49752b1c77746542c62f1c529e953Michal Krolstatic void 593d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantzidentity_set_vertex_buffers(struct pipe_context *_pipe, 594d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz unsigned num_buffers, 595d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz const struct pipe_vertex_buffer *_buffers) 596d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz{ 597d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct identity_context *id_pipe = identity_context(_pipe); 598d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct pipe_context *pipe = id_pipe->pipe; 599d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct pipe_vertex_buffer unwrapped_buffers[PIPE_MAX_SHADER_INPUTS]; 600d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct pipe_vertex_buffer *buffers = NULL; 601d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz unsigned i; 602d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 603d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz if (num_buffers) { 604d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz memcpy(unwrapped_buffers, _buffers, num_buffers * sizeof(*_buffers)); 605d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz for (i = 0; i < num_buffers; i++) 606287c94ea4987033f9c99a2f91c5750c9083504caKeith Whitwell unwrapped_buffers[i].buffer = identity_resource_unwrap(_buffers[i].buffer); 607d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz buffers = unwrapped_buffers; 608d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz } 609d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 610d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz pipe->set_vertex_buffers(pipe, 611d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz num_buffers, 612d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz buffers); 613d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz} 614d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantzstatic void 615fd578be828e1dd7c25160e7748b30b1421f4d0c7Roland Scheideggeridentity_resource_copy_region(struct pipe_context *_pipe, 616fd578be828e1dd7c25160e7748b30b1421f4d0c7Roland Scheidegger struct pipe_resource *_dst, 617fd578be828e1dd7c25160e7748b30b1421f4d0c7Roland Scheidegger struct pipe_subresource subdst, 618fd578be828e1dd7c25160e7748b30b1421f4d0c7Roland Scheidegger unsigned dstx, 619fd578be828e1dd7c25160e7748b30b1421f4d0c7Roland Scheidegger unsigned dsty, 620fd578be828e1dd7c25160e7748b30b1421f4d0c7Roland Scheidegger unsigned dstz, 621fd578be828e1dd7c25160e7748b30b1421f4d0c7Roland Scheidegger struct pipe_resource *_src, 622fd578be828e1dd7c25160e7748b30b1421f4d0c7Roland Scheidegger struct pipe_subresource subsrc, 623fd578be828e1dd7c25160e7748b30b1421f4d0c7Roland Scheidegger unsigned srcx, 624fd578be828e1dd7c25160e7748b30b1421f4d0c7Roland Scheidegger unsigned srcy, 625fd578be828e1dd7c25160e7748b30b1421f4d0c7Roland Scheidegger unsigned srcz, 626fd578be828e1dd7c25160e7748b30b1421f4d0c7Roland Scheidegger unsigned width, 627fd578be828e1dd7c25160e7748b30b1421f4d0c7Roland Scheidegger unsigned height) 628fd578be828e1dd7c25160e7748b30b1421f4d0c7Roland Scheidegger{ 629fd578be828e1dd7c25160e7748b30b1421f4d0c7Roland Scheidegger struct identity_context *id_pipe = identity_context(_pipe); 630fd578be828e1dd7c25160e7748b30b1421f4d0c7Roland Scheidegger struct identity_resource *id_resource_dst = identity_resource(_dst); 631fd578be828e1dd7c25160e7748b30b1421f4d0c7Roland Scheidegger struct identity_resource *id_resource_src = identity_resource(_src); 632fd578be828e1dd7c25160e7748b30b1421f4d0c7Roland Scheidegger struct pipe_context *pipe = id_pipe->pipe; 633fd578be828e1dd7c25160e7748b30b1421f4d0c7Roland Scheidegger struct pipe_resource *dst = id_resource_dst->resource; 634fd578be828e1dd7c25160e7748b30b1421f4d0c7Roland Scheidegger struct pipe_resource *src = id_resource_src->resource; 635fd578be828e1dd7c25160e7748b30b1421f4d0c7Roland Scheidegger 636fd578be828e1dd7c25160e7748b30b1421f4d0c7Roland Scheidegger pipe->resource_copy_region(pipe, 637fd578be828e1dd7c25160e7748b30b1421f4d0c7Roland Scheidegger dst, 638fd578be828e1dd7c25160e7748b30b1421f4d0c7Roland Scheidegger subdst, 639fd578be828e1dd7c25160e7748b30b1421f4d0c7Roland Scheidegger dstx, 640fd578be828e1dd7c25160e7748b30b1421f4d0c7Roland Scheidegger dsty, 641fd578be828e1dd7c25160e7748b30b1421f4d0c7Roland Scheidegger dstz, 642fd578be828e1dd7c25160e7748b30b1421f4d0c7Roland Scheidegger src, 643fd578be828e1dd7c25160e7748b30b1421f4d0c7Roland Scheidegger subsrc, 644fd578be828e1dd7c25160e7748b30b1421f4d0c7Roland Scheidegger srcx, 645fd578be828e1dd7c25160e7748b30b1421f4d0c7Roland Scheidegger srcy, 646fd578be828e1dd7c25160e7748b30b1421f4d0c7Roland Scheidegger srcz, 647fd578be828e1dd7c25160e7748b30b1421f4d0c7Roland Scheidegger width, 648fd578be828e1dd7c25160e7748b30b1421f4d0c7Roland Scheidegger height); 649fd578be828e1dd7c25160e7748b30b1421f4d0c7Roland Scheidegger} 650fd578be828e1dd7c25160e7748b30b1421f4d0c7Roland Scheidegger 651fd578be828e1dd7c25160e7748b30b1421f4d0c7Roland Scheideggerstatic void 652d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantzidentity_clear(struct pipe_context *_pipe, 653d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz unsigned buffers, 654d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz const float *rgba, 655d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz double depth, 656d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz unsigned stencil) 657d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz{ 658d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct identity_context *id_pipe = identity_context(_pipe); 659d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct pipe_context *pipe = id_pipe->pipe; 660d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 661d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz pipe->clear(pipe, 662d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz buffers, 663d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz rgba, 664d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz depth, 665d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz stencil); 666d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz} 667d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 668d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantzstatic void 66925296a3ed380f2a2179a9f435645a7ccaf10c04cRoland Scheideggeridentity_clearRT(struct pipe_context *_pipe, 67025296a3ed380f2a2179a9f435645a7ccaf10c04cRoland Scheidegger struct pipe_surface *_dst, 67125296a3ed380f2a2179a9f435645a7ccaf10c04cRoland Scheidegger const float *rgba, 67225296a3ed380f2a2179a9f435645a7ccaf10c04cRoland Scheidegger unsigned dstx, unsigned dsty, 67325296a3ed380f2a2179a9f435645a7ccaf10c04cRoland Scheidegger unsigned width, unsigned height) 67425296a3ed380f2a2179a9f435645a7ccaf10c04cRoland Scheidegger{ 67525296a3ed380f2a2179a9f435645a7ccaf10c04cRoland Scheidegger struct identity_context *id_pipe = identity_context(_pipe); 67625296a3ed380f2a2179a9f435645a7ccaf10c04cRoland Scheidegger struct identity_surface *id_surface_dst = identity_surface(_dst); 67725296a3ed380f2a2179a9f435645a7ccaf10c04cRoland Scheidegger struct pipe_context *pipe = id_pipe->pipe; 67825296a3ed380f2a2179a9f435645a7ccaf10c04cRoland Scheidegger struct pipe_surface *dst = id_surface_dst->surface; 67925296a3ed380f2a2179a9f435645a7ccaf10c04cRoland Scheidegger 68025296a3ed380f2a2179a9f435645a7ccaf10c04cRoland Scheidegger pipe->clearRT(pipe, 68125296a3ed380f2a2179a9f435645a7ccaf10c04cRoland Scheidegger dst, 68225296a3ed380f2a2179a9f435645a7ccaf10c04cRoland Scheidegger rgba, 68325296a3ed380f2a2179a9f435645a7ccaf10c04cRoland Scheidegger dstx, 68425296a3ed380f2a2179a9f435645a7ccaf10c04cRoland Scheidegger dsty, 68525296a3ed380f2a2179a9f435645a7ccaf10c04cRoland Scheidegger width, 68625296a3ed380f2a2179a9f435645a7ccaf10c04cRoland Scheidegger height); 68725296a3ed380f2a2179a9f435645a7ccaf10c04cRoland Scheidegger} 68825296a3ed380f2a2179a9f435645a7ccaf10c04cRoland Scheideggerstatic void 68925296a3ed380f2a2179a9f435645a7ccaf10c04cRoland Scheideggeridentity_clearDS(struct pipe_context *_pipe, 69025296a3ed380f2a2179a9f435645a7ccaf10c04cRoland Scheidegger struct pipe_surface *_dst, 69125296a3ed380f2a2179a9f435645a7ccaf10c04cRoland Scheidegger unsigned clear_flags, 69225296a3ed380f2a2179a9f435645a7ccaf10c04cRoland Scheidegger double depth, 69325296a3ed380f2a2179a9f435645a7ccaf10c04cRoland Scheidegger unsigned stencil, 69425296a3ed380f2a2179a9f435645a7ccaf10c04cRoland Scheidegger unsigned dstx, unsigned dsty, 69525296a3ed380f2a2179a9f435645a7ccaf10c04cRoland Scheidegger unsigned width, unsigned height) 69625296a3ed380f2a2179a9f435645a7ccaf10c04cRoland Scheidegger{ 69725296a3ed380f2a2179a9f435645a7ccaf10c04cRoland Scheidegger struct identity_context *id_pipe = identity_context(_pipe); 69825296a3ed380f2a2179a9f435645a7ccaf10c04cRoland Scheidegger struct identity_surface *id_surface_dst = identity_surface(_dst); 69925296a3ed380f2a2179a9f435645a7ccaf10c04cRoland Scheidegger struct pipe_context *pipe = id_pipe->pipe; 70025296a3ed380f2a2179a9f435645a7ccaf10c04cRoland Scheidegger struct pipe_surface *dst = id_surface_dst->surface; 70125296a3ed380f2a2179a9f435645a7ccaf10c04cRoland Scheidegger 70225296a3ed380f2a2179a9f435645a7ccaf10c04cRoland Scheidegger pipe->clearDS(pipe, 70325296a3ed380f2a2179a9f435645a7ccaf10c04cRoland Scheidegger dst, 70425296a3ed380f2a2179a9f435645a7ccaf10c04cRoland Scheidegger clear_flags, 70525296a3ed380f2a2179a9f435645a7ccaf10c04cRoland Scheidegger depth, 70625296a3ed380f2a2179a9f435645a7ccaf10c04cRoland Scheidegger stencil, 70725296a3ed380f2a2179a9f435645a7ccaf10c04cRoland Scheidegger dstx, 70825296a3ed380f2a2179a9f435645a7ccaf10c04cRoland Scheidegger dsty, 70925296a3ed380f2a2179a9f435645a7ccaf10c04cRoland Scheidegger width, 71025296a3ed380f2a2179a9f435645a7ccaf10c04cRoland Scheidegger height); 71125296a3ed380f2a2179a9f435645a7ccaf10c04cRoland Scheidegger 71225296a3ed380f2a2179a9f435645a7ccaf10c04cRoland Scheidegger} 71325296a3ed380f2a2179a9f435645a7ccaf10c04cRoland Scheidegger 71425296a3ed380f2a2179a9f435645a7ccaf10c04cRoland Scheideggerstatic void 715d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantzidentity_flush(struct pipe_context *_pipe, 716d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz unsigned flags, 717d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct pipe_fence_handle **fence) 718d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz{ 719d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct identity_context *id_pipe = identity_context(_pipe); 720d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct pipe_context *pipe = id_pipe->pipe; 721d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 722d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz pipe->flush(pipe, 723d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz flags, 724d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz fence); 725d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz} 726d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 727d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantzstatic unsigned int 728287c94ea4987033f9c99a2f91c5750c9083504caKeith Whitwellidentity_is_resource_referenced(struct pipe_context *_pipe, 729eda7c2506aff13726a265c70711d594ad8fddca3Jakob Bornecrantz struct pipe_resource *_resource, 730eda7c2506aff13726a265c70711d594ad8fddca3Jakob Bornecrantz unsigned face, 731eda7c2506aff13726a265c70711d594ad8fddca3Jakob Bornecrantz unsigned level) 732d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz{ 733d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct identity_context *id_pipe = identity_context(_pipe); 734287c94ea4987033f9c99a2f91c5750c9083504caKeith Whitwell struct identity_resource *id_resource = identity_resource(_resource); 735d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct pipe_context *pipe = id_pipe->pipe; 73659b160d286e5848851848e09c87eb64cd2631c6bJakob Bornecrantz struct pipe_resource *resource = id_resource->resource; 737d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 738287c94ea4987033f9c99a2f91c5750c9083504caKeith Whitwell return pipe->is_resource_referenced(pipe, 73959b160d286e5848851848e09c87eb64cd2631c6bJakob Bornecrantz resource, 740eda7c2506aff13726a265c70711d594ad8fddca3Jakob Bornecrantz face, 741eda7c2506aff13726a265c70711d594ad8fddca3Jakob Bornecrantz level); 742d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz} 743d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 74414a146c4995da5074eb1192a818b7a3dfc3bb438Michal Krolstatic struct pipe_sampler_view * 745c2c1f60391113490f4f90efb2786544c599ac991Jakob Bornecrantzidentity_context_create_sampler_view(struct pipe_context *_pipe, 746c2c1f60391113490f4f90efb2786544c599ac991Jakob Bornecrantz struct pipe_resource *_resource, 747c2c1f60391113490f4f90efb2786544c599ac991Jakob Bornecrantz const struct pipe_sampler_view *templ) 74814a146c4995da5074eb1192a818b7a3dfc3bb438Michal Krol{ 749c2c1f60391113490f4f90efb2786544c599ac991Jakob Bornecrantz struct identity_context *id_context = identity_context(_pipe); 750c2c1f60391113490f4f90efb2786544c599ac991Jakob Bornecrantz struct identity_resource *id_resource = identity_resource(_resource); 751c2c1f60391113490f4f90efb2786544c599ac991Jakob Bornecrantz struct pipe_context *pipe = id_context->pipe; 752c2c1f60391113490f4f90efb2786544c599ac991Jakob Bornecrantz struct pipe_resource *resource = id_resource->resource; 753c2c1f60391113490f4f90efb2786544c599ac991Jakob Bornecrantz struct pipe_sampler_view *result; 75414a146c4995da5074eb1192a818b7a3dfc3bb438Michal Krol 755c2c1f60391113490f4f90efb2786544c599ac991Jakob Bornecrantz result = pipe->create_sampler_view(pipe, 756c2c1f60391113490f4f90efb2786544c599ac991Jakob Bornecrantz resource, 757c2c1f60391113490f4f90efb2786544c599ac991Jakob Bornecrantz templ); 75814a146c4995da5074eb1192a818b7a3dfc3bb438Michal Krol 759c2c1f60391113490f4f90efb2786544c599ac991Jakob Bornecrantz if (result) 760c2c1f60391113490f4f90efb2786544c599ac991Jakob Bornecrantz return identity_sampler_view_create(id_context, id_resource, result); 761c2c1f60391113490f4f90efb2786544c599ac991Jakob Bornecrantz return NULL; 76214a146c4995da5074eb1192a818b7a3dfc3bb438Michal Krol} 76314a146c4995da5074eb1192a818b7a3dfc3bb438Michal Krol 76414a146c4995da5074eb1192a818b7a3dfc3bb438Michal Krolstatic void 765c2c1f60391113490f4f90efb2786544c599ac991Jakob Bornecrantzidentity_context_sampler_view_destroy(struct pipe_context *_pipe, 766c2c1f60391113490f4f90efb2786544c599ac991Jakob Bornecrantz struct pipe_sampler_view *_view) 76714a146c4995da5074eb1192a818b7a3dfc3bb438Michal Krol{ 768c2c1f60391113490f4f90efb2786544c599ac991Jakob Bornecrantz identity_sampler_view_destroy(identity_context(_pipe), 769c2c1f60391113490f4f90efb2786544c599ac991Jakob Bornecrantz identity_sampler_view(_view)); 77014a146c4995da5074eb1192a818b7a3dfc3bb438Michal Krol} 77114a146c4995da5074eb1192a818b7a3dfc3bb438Michal Krol 772b43c182f19c6291c88420fa12714f952c2b461fbKeith Whitwellstatic struct pipe_transfer * 773287c94ea4987033f9c99a2f91c5750c9083504caKeith Whitwellidentity_context_get_transfer(struct pipe_context *_context, 774eda7c2506aff13726a265c70711d594ad8fddca3Jakob Bornecrantz struct pipe_resource *_resource, 775eda7c2506aff13726a265c70711d594ad8fddca3Jakob Bornecrantz struct pipe_subresource sr, 776eda7c2506aff13726a265c70711d594ad8fddca3Jakob Bornecrantz unsigned usage, 777eda7c2506aff13726a265c70711d594ad8fddca3Jakob Bornecrantz const struct pipe_box *box) 778b43c182f19c6291c88420fa12714f952c2b461fbKeith Whitwell{ 779b43c182f19c6291c88420fa12714f952c2b461fbKeith Whitwell struct identity_context *id_context = identity_context(_context); 780287c94ea4987033f9c99a2f91c5750c9083504caKeith Whitwell struct identity_resource *id_resource = identity_resource(_resource); 781b43c182f19c6291c88420fa12714f952c2b461fbKeith Whitwell struct pipe_context *context = id_context->pipe; 78259b160d286e5848851848e09c87eb64cd2631c6bJakob Bornecrantz struct pipe_resource *resource = id_resource->resource; 783b43c182f19c6291c88420fa12714f952c2b461fbKeith Whitwell struct pipe_transfer *result; 784b43c182f19c6291c88420fa12714f952c2b461fbKeith Whitwell 785287c94ea4987033f9c99a2f91c5750c9083504caKeith Whitwell result = context->get_transfer(context, 78659b160d286e5848851848e09c87eb64cd2631c6bJakob Bornecrantz resource, 787eda7c2506aff13726a265c70711d594ad8fddca3Jakob Bornecrantz sr, 788eda7c2506aff13726a265c70711d594ad8fddca3Jakob Bornecrantz usage, 789eda7c2506aff13726a265c70711d594ad8fddca3Jakob Bornecrantz box); 790b43c182f19c6291c88420fa12714f952c2b461fbKeith Whitwell 791b43c182f19c6291c88420fa12714f952c2b461fbKeith Whitwell if (result) 792287c94ea4987033f9c99a2f91c5750c9083504caKeith Whitwell return identity_transfer_create(id_context, id_resource, result); 793b43c182f19c6291c88420fa12714f952c2b461fbKeith Whitwell return NULL; 794b43c182f19c6291c88420fa12714f952c2b461fbKeith Whitwell} 795b43c182f19c6291c88420fa12714f952c2b461fbKeith Whitwell 796b43c182f19c6291c88420fa12714f952c2b461fbKeith Whitwellstatic void 797287c94ea4987033f9c99a2f91c5750c9083504caKeith Whitwellidentity_context_transfer_destroy(struct pipe_context *_pipe, 798eda7c2506aff13726a265c70711d594ad8fddca3Jakob Bornecrantz struct pipe_transfer *_transfer) 799b43c182f19c6291c88420fa12714f952c2b461fbKeith Whitwell{ 800d35ecca5ee231c072687578642e0c22c6c0590b1Keith Whitwell identity_transfer_destroy(identity_context(_pipe), 801d35ecca5ee231c072687578642e0c22c6c0590b1Keith Whitwell identity_transfer(_transfer)); 802b43c182f19c6291c88420fa12714f952c2b461fbKeith Whitwell} 803b43c182f19c6291c88420fa12714f952c2b461fbKeith Whitwell 804b43c182f19c6291c88420fa12714f952c2b461fbKeith Whitwellstatic void * 805b43c182f19c6291c88420fa12714f952c2b461fbKeith Whitwellidentity_context_transfer_map(struct pipe_context *_context, 806eda7c2506aff13726a265c70711d594ad8fddca3Jakob Bornecrantz struct pipe_transfer *_transfer) 807b43c182f19c6291c88420fa12714f952c2b461fbKeith Whitwell{ 808b43c182f19c6291c88420fa12714f952c2b461fbKeith Whitwell struct identity_context *id_context = identity_context(_context); 809b43c182f19c6291c88420fa12714f952c2b461fbKeith Whitwell struct identity_transfer *id_transfer = identity_transfer(_transfer); 810b43c182f19c6291c88420fa12714f952c2b461fbKeith Whitwell struct pipe_context *context = id_context->pipe; 811b43c182f19c6291c88420fa12714f952c2b461fbKeith Whitwell struct pipe_transfer *transfer = id_transfer->transfer; 812b43c182f19c6291c88420fa12714f952c2b461fbKeith Whitwell 813b43c182f19c6291c88420fa12714f952c2b461fbKeith Whitwell return context->transfer_map(context, 814eda7c2506aff13726a265c70711d594ad8fddca3Jakob Bornecrantz transfer); 815b43c182f19c6291c88420fa12714f952c2b461fbKeith Whitwell} 816b43c182f19c6291c88420fa12714f952c2b461fbKeith Whitwell 817287c94ea4987033f9c99a2f91c5750c9083504caKeith Whitwell 818287c94ea4987033f9c99a2f91c5750c9083504caKeith Whitwell 819287c94ea4987033f9c99a2f91c5750c9083504caKeith Whitwellstatic void 820eda7c2506aff13726a265c70711d594ad8fddca3Jakob Bornecrantzidentity_context_transfer_flush_region(struct pipe_context *_context, 821eda7c2506aff13726a265c70711d594ad8fddca3Jakob Bornecrantz struct pipe_transfer *_transfer, 822eda7c2506aff13726a265c70711d594ad8fddca3Jakob Bornecrantz const struct pipe_box *box) 823287c94ea4987033f9c99a2f91c5750c9083504caKeith Whitwell{ 824287c94ea4987033f9c99a2f91c5750c9083504caKeith Whitwell struct identity_context *id_context = identity_context(_context); 825287c94ea4987033f9c99a2f91c5750c9083504caKeith Whitwell struct identity_transfer *id_transfer = identity_transfer(_transfer); 826287c94ea4987033f9c99a2f91c5750c9083504caKeith Whitwell struct pipe_context *context = id_context->pipe; 827287c94ea4987033f9c99a2f91c5750c9083504caKeith Whitwell struct pipe_transfer *transfer = id_transfer->transfer; 828287c94ea4987033f9c99a2f91c5750c9083504caKeith Whitwell 829287c94ea4987033f9c99a2f91c5750c9083504caKeith Whitwell context->transfer_flush_region(context, 830eda7c2506aff13726a265c70711d594ad8fddca3Jakob Bornecrantz transfer, 831eda7c2506aff13726a265c70711d594ad8fddca3Jakob Bornecrantz box); 832287c94ea4987033f9c99a2f91c5750c9083504caKeith Whitwell} 833287c94ea4987033f9c99a2f91c5750c9083504caKeith Whitwell 834287c94ea4987033f9c99a2f91c5750c9083504caKeith Whitwell 835b43c182f19c6291c88420fa12714f952c2b461fbKeith Whitwellstatic void 836b43c182f19c6291c88420fa12714f952c2b461fbKeith Whitwellidentity_context_transfer_unmap(struct pipe_context *_context, 837eda7c2506aff13726a265c70711d594ad8fddca3Jakob Bornecrantz struct pipe_transfer *_transfer) 838b43c182f19c6291c88420fa12714f952c2b461fbKeith Whitwell{ 839b43c182f19c6291c88420fa12714f952c2b461fbKeith Whitwell struct identity_context *id_context = identity_context(_context); 840b43c182f19c6291c88420fa12714f952c2b461fbKeith Whitwell struct identity_transfer *id_transfer = identity_transfer(_transfer); 841b43c182f19c6291c88420fa12714f952c2b461fbKeith Whitwell struct pipe_context *context = id_context->pipe; 842b43c182f19c6291c88420fa12714f952c2b461fbKeith Whitwell struct pipe_transfer *transfer = id_transfer->transfer; 843b43c182f19c6291c88420fa12714f952c2b461fbKeith Whitwell 844b43c182f19c6291c88420fa12714f952c2b461fbKeith Whitwell context->transfer_unmap(context, 845eda7c2506aff13726a265c70711d594ad8fddca3Jakob Bornecrantz transfer); 846b43c182f19c6291c88420fa12714f952c2b461fbKeith Whitwell} 847b43c182f19c6291c88420fa12714f952c2b461fbKeith Whitwell 848287c94ea4987033f9c99a2f91c5750c9083504caKeith Whitwell 849287c94ea4987033f9c99a2f91c5750c9083504caKeith Whitwellstatic void 850eda7c2506aff13726a265c70711d594ad8fddca3Jakob Bornecrantzidentity_context_transfer_inline_write(struct pipe_context *_context, 851eda7c2506aff13726a265c70711d594ad8fddca3Jakob Bornecrantz struct pipe_resource *_resource, 852eda7c2506aff13726a265c70711d594ad8fddca3Jakob Bornecrantz struct pipe_subresource sr, 853eda7c2506aff13726a265c70711d594ad8fddca3Jakob Bornecrantz unsigned usage, 854eda7c2506aff13726a265c70711d594ad8fddca3Jakob Bornecrantz const struct pipe_box *box, 855eda7c2506aff13726a265c70711d594ad8fddca3Jakob Bornecrantz const void *data, 856eda7c2506aff13726a265c70711d594ad8fddca3Jakob Bornecrantz unsigned stride, 857eda7c2506aff13726a265c70711d594ad8fddca3Jakob Bornecrantz unsigned slice_stride) 858287c94ea4987033f9c99a2f91c5750c9083504caKeith Whitwell{ 859287c94ea4987033f9c99a2f91c5750c9083504caKeith Whitwell struct identity_context *id_context = identity_context(_context); 860287c94ea4987033f9c99a2f91c5750c9083504caKeith Whitwell struct identity_resource *id_resource = identity_resource(_resource); 861287c94ea4987033f9c99a2f91c5750c9083504caKeith Whitwell struct pipe_context *context = id_context->pipe; 86259b160d286e5848851848e09c87eb64cd2631c6bJakob Bornecrantz struct pipe_resource *resource = id_resource->resource; 863287c94ea4987033f9c99a2f91c5750c9083504caKeith Whitwell 864287c94ea4987033f9c99a2f91c5750c9083504caKeith Whitwell context->transfer_inline_write(context, 86559b160d286e5848851848e09c87eb64cd2631c6bJakob Bornecrantz resource, 866eda7c2506aff13726a265c70711d594ad8fddca3Jakob Bornecrantz sr, 867eda7c2506aff13726a265c70711d594ad8fddca3Jakob Bornecrantz usage, 868eda7c2506aff13726a265c70711d594ad8fddca3Jakob Bornecrantz box, 869eda7c2506aff13726a265c70711d594ad8fddca3Jakob Bornecrantz data, 870eda7c2506aff13726a265c70711d594ad8fddca3Jakob Bornecrantz stride, 871eda7c2506aff13726a265c70711d594ad8fddca3Jakob Bornecrantz slice_stride); 872287c94ea4987033f9c99a2f91c5750c9083504caKeith Whitwell} 873287c94ea4987033f9c99a2f91c5750c9083504caKeith Whitwell 874287c94ea4987033f9c99a2f91c5750c9083504caKeith Whitwell 875d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantzstruct pipe_context * 876d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantzidentity_context_create(struct pipe_screen *_screen, struct pipe_context *pipe) 877d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz{ 878d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz struct identity_context *id_pipe; 879d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz (void)identity_screen(_screen); 880d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 881d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz id_pipe = CALLOC_STRUCT(identity_context); 882d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz if (!id_pipe) { 883d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz return NULL; 884d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz } 885d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 886d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz id_pipe->base.winsys = NULL; 887d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz id_pipe->base.screen = _screen; 8887f41f5447c8f9113c8956901e1c5fff6081ecd94Keith Whitwell id_pipe->base.priv = pipe->priv; /* expose wrapped data */ 889d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz id_pipe->base.draw = NULL; 890d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 891d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz id_pipe->base.destroy = identity_destroy; 892d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz id_pipe->base.draw_arrays = identity_draw_arrays; 893d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz id_pipe->base.draw_elements = identity_draw_elements; 894d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz id_pipe->base.draw_range_elements = identity_draw_range_elements; 895d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz id_pipe->base.create_query = identity_create_query; 896d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz id_pipe->base.destroy_query = identity_destroy_query; 897d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz id_pipe->base.begin_query = identity_begin_query; 898d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz id_pipe->base.end_query = identity_end_query; 899d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz id_pipe->base.get_query_result = identity_get_query_result; 900d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz id_pipe->base.create_blend_state = identity_create_blend_state; 901d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz id_pipe->base.bind_blend_state = identity_bind_blend_state; 902d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz id_pipe->base.delete_blend_state = identity_delete_blend_state; 903d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz id_pipe->base.create_sampler_state = identity_create_sampler_state; 904f2f7bd855af49752b1c77746542c62f1c529e953Michal Krol id_pipe->base.bind_fragment_sampler_states = identity_bind_fragment_sampler_states; 905f2f7bd855af49752b1c77746542c62f1c529e953Michal Krol id_pipe->base.bind_vertex_sampler_states = identity_bind_vertex_sampler_states; 906d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz id_pipe->base.delete_sampler_state = identity_delete_sampler_state; 907d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz id_pipe->base.create_rasterizer_state = identity_create_rasterizer_state; 908d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz id_pipe->base.bind_rasterizer_state = identity_bind_rasterizer_state; 909d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz id_pipe->base.delete_rasterizer_state = identity_delete_rasterizer_state; 910d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz id_pipe->base.create_depth_stencil_alpha_state = identity_create_depth_stencil_alpha_state; 911d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz id_pipe->base.bind_depth_stencil_alpha_state = identity_bind_depth_stencil_alpha_state; 912d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz id_pipe->base.delete_depth_stencil_alpha_state = identity_delete_depth_stencil_alpha_state; 913d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz id_pipe->base.create_fs_state = identity_create_fs_state; 914d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz id_pipe->base.bind_fs_state = identity_bind_fs_state; 915d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz id_pipe->base.delete_fs_state = identity_delete_fs_state; 916d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz id_pipe->base.create_vs_state = identity_create_vs_state; 917d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz id_pipe->base.bind_vs_state = identity_bind_vs_state; 918d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz id_pipe->base.delete_vs_state = identity_delete_vs_state; 919881be308360ec8019f17bc970bece23e9395134fRoland Scheidegger id_pipe->base.create_vertex_elements_state = identity_create_vertex_elements_state; 920881be308360ec8019f17bc970bece23e9395134fRoland Scheidegger id_pipe->base.bind_vertex_elements_state = identity_bind_vertex_elements_state; 921881be308360ec8019f17bc970bece23e9395134fRoland Scheidegger id_pipe->base.delete_vertex_elements_state = identity_delete_vertex_elements_state; 922d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz id_pipe->base.set_blend_color = identity_set_blend_color; 9234ea2f61e5ae556fa4141cd226ecbf1521e9f16ffRoland Scheidegger id_pipe->base.set_stencil_ref = identity_set_stencil_ref; 924d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz id_pipe->base.set_clip_state = identity_set_clip_state; 92543234cee40c48e14a3eab4268181d9b0b2b7cf79Roland Scheidegger id_pipe->base.set_sample_mask = identity_set_sample_mask; 926d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz id_pipe->base.set_constant_buffer = identity_set_constant_buffer; 927d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz id_pipe->base.set_framebuffer_state = identity_set_framebuffer_state; 928d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz id_pipe->base.set_polygon_stipple = identity_set_polygon_stipple; 929d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz id_pipe->base.set_scissor_state = identity_set_scissor_state; 930d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz id_pipe->base.set_viewport_state = identity_set_viewport_state; 931f6106566081978f663cf08e54bb8908cb58a5316Michal Krol id_pipe->base.set_fragment_sampler_views = identity_set_fragment_sampler_views; 932f6106566081978f663cf08e54bb8908cb58a5316Michal Krol id_pipe->base.set_vertex_sampler_views = identity_set_vertex_sampler_views; 933d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz id_pipe->base.set_vertex_buffers = identity_set_vertex_buffers; 934fd578be828e1dd7c25160e7748b30b1421f4d0c7Roland Scheidegger id_pipe->base.resource_copy_region = identity_resource_copy_region; 935d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz id_pipe->base.clear = identity_clear; 93625296a3ed380f2a2179a9f435645a7ccaf10c04cRoland Scheidegger id_pipe->base.clearRT = identity_clearRT; 93725296a3ed380f2a2179a9f435645a7ccaf10c04cRoland Scheidegger id_pipe->base.clearDS = identity_clearDS; 938d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz id_pipe->base.flush = identity_flush; 939287c94ea4987033f9c99a2f91c5750c9083504caKeith Whitwell id_pipe->base.is_resource_referenced = identity_is_resource_referenced; 940c2c1f60391113490f4f90efb2786544c599ac991Jakob Bornecrantz id_pipe->base.create_sampler_view = identity_context_create_sampler_view; 941c2c1f60391113490f4f90efb2786544c599ac991Jakob Bornecrantz id_pipe->base.sampler_view_destroy = identity_context_sampler_view_destroy; 942287c94ea4987033f9c99a2f91c5750c9083504caKeith Whitwell id_pipe->base.get_transfer = identity_context_get_transfer; 943287c94ea4987033f9c99a2f91c5750c9083504caKeith Whitwell id_pipe->base.transfer_destroy = identity_context_transfer_destroy; 944b43c182f19c6291c88420fa12714f952c2b461fbKeith Whitwell id_pipe->base.transfer_map = identity_context_transfer_map; 945b43c182f19c6291c88420fa12714f952c2b461fbKeith Whitwell id_pipe->base.transfer_unmap = identity_context_transfer_unmap; 946287c94ea4987033f9c99a2f91c5750c9083504caKeith Whitwell id_pipe->base.transfer_flush_region = identity_context_transfer_flush_region; 947287c94ea4987033f9c99a2f91c5750c9083504caKeith Whitwell id_pipe->base.transfer_inline_write = identity_context_transfer_inline_write; 948d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 949d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz id_pipe->pipe = pipe; 950d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz 951d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz return &id_pipe->base; 952d60b2c68552a2729dfdb33c2bac4822453cf8ae2Jakob Bornecrantz} 953