15da246944a787b933a509f0b65bab466574c3339Jerome Glisse/* 25da246944a787b933a509f0b65bab466574c3339Jerome Glisse * Copyright 2010 Red Hat Inc. 35da246944a787b933a509f0b65bab466574c3339Jerome Glisse * 45da246944a787b933a509f0b65bab466574c3339Jerome Glisse * Permission is hereby granted, free of charge, to any person obtaining a 55da246944a787b933a509f0b65bab466574c3339Jerome Glisse * copy of this software and associated documentation files (the "Software"), 65da246944a787b933a509f0b65bab466574c3339Jerome Glisse * to deal in the Software without restriction, including without limitation 75da246944a787b933a509f0b65bab466574c3339Jerome Glisse * on the rights to use, copy, modify, merge, publish, distribute, sub 85da246944a787b933a509f0b65bab466574c3339Jerome Glisse * license, and/or sell copies of the Software, and to permit persons to whom 95da246944a787b933a509f0b65bab466574c3339Jerome Glisse * the Software is furnished to do so, subject to the following conditions: 105da246944a787b933a509f0b65bab466574c3339Jerome Glisse * 115da246944a787b933a509f0b65bab466574c3339Jerome Glisse * The above copyright notice and this permission notice (including the next 125da246944a787b933a509f0b65bab466574c3339Jerome Glisse * paragraph) shall be included in all copies or substantial portions of the 135da246944a787b933a509f0b65bab466574c3339Jerome Glisse * Software. 145da246944a787b933a509f0b65bab466574c3339Jerome Glisse * 155da246944a787b933a509f0b65bab466574c3339Jerome Glisse * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 165da246944a787b933a509f0b65bab466574c3339Jerome Glisse * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 175da246944a787b933a509f0b65bab466574c3339Jerome Glisse * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL 185da246944a787b933a509f0b65bab466574c3339Jerome Glisse * THE AUTHOR(S) AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM, 195da246944a787b933a509f0b65bab466574c3339Jerome Glisse * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR 205da246944a787b933a509f0b65bab466574c3339Jerome Glisse * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE 215da246944a787b933a509f0b65bab466574c3339Jerome Glisse * USE OR OTHER DEALINGS IN THE SOFTWARE. 225da246944a787b933a509f0b65bab466574c3339Jerome Glisse */ 235da246944a787b933a509f0b65bab466574c3339Jerome Glisse#include <stdio.h> 245da246944a787b933a509f0b65bab466574c3339Jerome Glisse#include <errno.h> 25625593fde252269455f3e23baa5a63afb3389588Kai Wasserbäch#include "pipe/p_defines.h" 26625593fde252269455f3e23baa5a63afb3389588Kai Wasserbäch#include "pipe/p_state.h" 27625593fde252269455f3e23baa5a63afb3389588Kai Wasserbäch#include "pipe/p_context.h" 28625593fde252269455f3e23baa5a63afb3389588Kai Wasserbäch#include "pipe/p_screen.h" 29625593fde252269455f3e23baa5a63afb3389588Kai Wasserbäch#include "util/u_memory.h" 30625593fde252269455f3e23baa5a63afb3389588Kai Wasserbäch#include "util/u_inlines.h" 31588fa884d212eba5ffbc69fda75db37d7c77214cMarek Olšák#include "util/u_transfer.h" 325da246944a787b933a509f0b65bab466574c3339Jerome Glisse 335da246944a787b933a509f0b65bab466574c3339Jerome Glissestatic void noop_draw_vbo(struct pipe_context *ctx, const struct pipe_draw_info *info) 345da246944a787b933a509f0b65bab466574c3339Jerome Glisse{ 355da246944a787b933a509f0b65bab466574c3339Jerome Glisse} 365da246944a787b933a509f0b65bab466574c3339Jerome Glisse 375da246944a787b933a509f0b65bab466574c3339Jerome Glissestatic void noop_set_blend_color(struct pipe_context *ctx, 385da246944a787b933a509f0b65bab466574c3339Jerome Glisse const struct pipe_blend_color *state) 395da246944a787b933a509f0b65bab466574c3339Jerome Glisse{ 405da246944a787b933a509f0b65bab466574c3339Jerome Glisse} 415da246944a787b933a509f0b65bab466574c3339Jerome Glisse 425da246944a787b933a509f0b65bab466574c3339Jerome Glissestatic void *noop_create_blend_state(struct pipe_context *ctx, 435da246944a787b933a509f0b65bab466574c3339Jerome Glisse const struct pipe_blend_state *state) 445da246944a787b933a509f0b65bab466574c3339Jerome Glisse{ 455da246944a787b933a509f0b65bab466574c3339Jerome Glisse struct pipe_blend_state *nstate = CALLOC_STRUCT(pipe_blend_state); 465da246944a787b933a509f0b65bab466574c3339Jerome Glisse 475da246944a787b933a509f0b65bab466574c3339Jerome Glisse if (nstate == NULL) { 485da246944a787b933a509f0b65bab466574c3339Jerome Glisse return NULL; 495da246944a787b933a509f0b65bab466574c3339Jerome Glisse } 505da246944a787b933a509f0b65bab466574c3339Jerome Glisse *nstate = *state; 515da246944a787b933a509f0b65bab466574c3339Jerome Glisse return nstate; 525da246944a787b933a509f0b65bab466574c3339Jerome Glisse} 535da246944a787b933a509f0b65bab466574c3339Jerome Glisse 545da246944a787b933a509f0b65bab466574c3339Jerome Glissestatic void *noop_create_dsa_state(struct pipe_context *ctx, 555da246944a787b933a509f0b65bab466574c3339Jerome Glisse const struct pipe_depth_stencil_alpha_state *state) 565da246944a787b933a509f0b65bab466574c3339Jerome Glisse{ 575da246944a787b933a509f0b65bab466574c3339Jerome Glisse struct pipe_depth_stencil_alpha_state *nstate = CALLOC_STRUCT(pipe_depth_stencil_alpha_state); 585da246944a787b933a509f0b65bab466574c3339Jerome Glisse 595da246944a787b933a509f0b65bab466574c3339Jerome Glisse if (nstate == NULL) { 605da246944a787b933a509f0b65bab466574c3339Jerome Glisse return NULL; 615da246944a787b933a509f0b65bab466574c3339Jerome Glisse } 625da246944a787b933a509f0b65bab466574c3339Jerome Glisse *nstate = *state; 635da246944a787b933a509f0b65bab466574c3339Jerome Glisse return nstate; 645da246944a787b933a509f0b65bab466574c3339Jerome Glisse} 655da246944a787b933a509f0b65bab466574c3339Jerome Glisse 665da246944a787b933a509f0b65bab466574c3339Jerome Glissestatic void *noop_create_rs_state(struct pipe_context *ctx, 675da246944a787b933a509f0b65bab466574c3339Jerome Glisse const struct pipe_rasterizer_state *state) 685da246944a787b933a509f0b65bab466574c3339Jerome Glisse{ 695da246944a787b933a509f0b65bab466574c3339Jerome Glisse struct pipe_rasterizer_state *nstate = CALLOC_STRUCT(pipe_rasterizer_state); 705da246944a787b933a509f0b65bab466574c3339Jerome Glisse 715da246944a787b933a509f0b65bab466574c3339Jerome Glisse if (nstate == NULL) { 725da246944a787b933a509f0b65bab466574c3339Jerome Glisse return NULL; 735da246944a787b933a509f0b65bab466574c3339Jerome Glisse } 745da246944a787b933a509f0b65bab466574c3339Jerome Glisse *nstate = *state; 755da246944a787b933a509f0b65bab466574c3339Jerome Glisse return nstate; 765da246944a787b933a509f0b65bab466574c3339Jerome Glisse} 775da246944a787b933a509f0b65bab466574c3339Jerome Glisse 785da246944a787b933a509f0b65bab466574c3339Jerome Glissestatic void *noop_create_sampler_state(struct pipe_context *ctx, 795da246944a787b933a509f0b65bab466574c3339Jerome Glisse const struct pipe_sampler_state *state) 805da246944a787b933a509f0b65bab466574c3339Jerome Glisse{ 815da246944a787b933a509f0b65bab466574c3339Jerome Glisse struct pipe_sampler_state *nstate = CALLOC_STRUCT(pipe_sampler_state); 825da246944a787b933a509f0b65bab466574c3339Jerome Glisse 835da246944a787b933a509f0b65bab466574c3339Jerome Glisse if (nstate == NULL) { 845da246944a787b933a509f0b65bab466574c3339Jerome Glisse return NULL; 855da246944a787b933a509f0b65bab466574c3339Jerome Glisse } 865da246944a787b933a509f0b65bab466574c3339Jerome Glisse *nstate = *state; 875da246944a787b933a509f0b65bab466574c3339Jerome Glisse return nstate; 885da246944a787b933a509f0b65bab466574c3339Jerome Glisse} 895da246944a787b933a509f0b65bab466574c3339Jerome Glisse 905da246944a787b933a509f0b65bab466574c3339Jerome Glissestatic struct pipe_sampler_view *noop_create_sampler_view(struct pipe_context *ctx, 915da246944a787b933a509f0b65bab466574c3339Jerome Glisse struct pipe_resource *texture, 925da246944a787b933a509f0b65bab466574c3339Jerome Glisse const struct pipe_sampler_view *state) 935da246944a787b933a509f0b65bab466574c3339Jerome Glisse{ 945da246944a787b933a509f0b65bab466574c3339Jerome Glisse struct pipe_sampler_view *sampler_view = CALLOC_STRUCT(pipe_sampler_view); 955da246944a787b933a509f0b65bab466574c3339Jerome Glisse 965da246944a787b933a509f0b65bab466574c3339Jerome Glisse if (sampler_view == NULL) 975da246944a787b933a509f0b65bab466574c3339Jerome Glisse return NULL; 985da246944a787b933a509f0b65bab466574c3339Jerome Glisse /* initialize base object */ 995da246944a787b933a509f0b65bab466574c3339Jerome Glisse pipe_resource_reference(&sampler_view->texture, texture); 1005da246944a787b933a509f0b65bab466574c3339Jerome Glisse pipe_reference_init(&sampler_view->reference, 1); 1015da246944a787b933a509f0b65bab466574c3339Jerome Glisse sampler_view->context = ctx; 1025da246944a787b933a509f0b65bab466574c3339Jerome Glisse return sampler_view; 1035da246944a787b933a509f0b65bab466574c3339Jerome Glisse} 1045da246944a787b933a509f0b65bab466574c3339Jerome Glisse 1054c7001462607e6e99e474d6271dd481d3f8f201cRoland Scheideggerstatic struct pipe_surface *noop_create_surface(struct pipe_context *ctx, 1064c7001462607e6e99e474d6271dd481d3f8f201cRoland Scheidegger struct pipe_resource *texture, 1074c7001462607e6e99e474d6271dd481d3f8f201cRoland Scheidegger const struct pipe_surface *surf_tmpl) 1084c7001462607e6e99e474d6271dd481d3f8f201cRoland Scheidegger{ 1094c7001462607e6e99e474d6271dd481d3f8f201cRoland Scheidegger struct pipe_surface *surface = CALLOC_STRUCT(pipe_surface); 1104c7001462607e6e99e474d6271dd481d3f8f201cRoland Scheidegger 1114c7001462607e6e99e474d6271dd481d3f8f201cRoland Scheidegger if (surface == NULL) 1124c7001462607e6e99e474d6271dd481d3f8f201cRoland Scheidegger return NULL; 1134c7001462607e6e99e474d6271dd481d3f8f201cRoland Scheidegger pipe_reference_init(&surface->reference, 1); 1144c7001462607e6e99e474d6271dd481d3f8f201cRoland Scheidegger pipe_resource_reference(&surface->texture, texture); 1154c7001462607e6e99e474d6271dd481d3f8f201cRoland Scheidegger surface->context = ctx; 1164c7001462607e6e99e474d6271dd481d3f8f201cRoland Scheidegger surface->format = surf_tmpl->format; 1174c7001462607e6e99e474d6271dd481d3f8f201cRoland Scheidegger surface->width = texture->width0; 1184c7001462607e6e99e474d6271dd481d3f8f201cRoland Scheidegger surface->height = texture->height0; 1194c7001462607e6e99e474d6271dd481d3f8f201cRoland Scheidegger surface->usage = surf_tmpl->usage; 1204c7001462607e6e99e474d6271dd481d3f8f201cRoland Scheidegger surface->texture = texture; 1214c7001462607e6e99e474d6271dd481d3f8f201cRoland Scheidegger surface->u.tex.first_layer = surf_tmpl->u.tex.first_layer; 1224c7001462607e6e99e474d6271dd481d3f8f201cRoland Scheidegger surface->u.tex.last_layer = surf_tmpl->u.tex.last_layer; 1234c7001462607e6e99e474d6271dd481d3f8f201cRoland Scheidegger surface->u.tex.level = surf_tmpl->u.tex.level; 1244c7001462607e6e99e474d6271dd481d3f8f201cRoland Scheidegger 1254c7001462607e6e99e474d6271dd481d3f8f201cRoland Scheidegger return surface; 1264c7001462607e6e99e474d6271dd481d3f8f201cRoland Scheidegger} 1276a00e4eaee19cdbc8423e53c22fc8a1d7fdd68ddMarek Olšák 1285da246944a787b933a509f0b65bab466574c3339Jerome Glissestatic void noop_set_vs_sampler_view(struct pipe_context *ctx, unsigned count, 1295da246944a787b933a509f0b65bab466574c3339Jerome Glisse struct pipe_sampler_view **views) 1305da246944a787b933a509f0b65bab466574c3339Jerome Glisse{ 1315da246944a787b933a509f0b65bab466574c3339Jerome Glisse} 1325da246944a787b933a509f0b65bab466574c3339Jerome Glisse 1335da246944a787b933a509f0b65bab466574c3339Jerome Glissestatic void noop_set_ps_sampler_view(struct pipe_context *ctx, unsigned count, 1345da246944a787b933a509f0b65bab466574c3339Jerome Glisse struct pipe_sampler_view **views) 1355da246944a787b933a509f0b65bab466574c3339Jerome Glisse{ 1365da246944a787b933a509f0b65bab466574c3339Jerome Glisse} 1375da246944a787b933a509f0b65bab466574c3339Jerome Glisse 1385da246944a787b933a509f0b65bab466574c3339Jerome Glissestatic void noop_bind_sampler(struct pipe_context *ctx, unsigned count, void **states) 1395da246944a787b933a509f0b65bab466574c3339Jerome Glisse{ 1405da246944a787b933a509f0b65bab466574c3339Jerome Glisse} 1415da246944a787b933a509f0b65bab466574c3339Jerome Glisse 1425da246944a787b933a509f0b65bab466574c3339Jerome Glissestatic void noop_set_clip_state(struct pipe_context *ctx, 1435da246944a787b933a509f0b65bab466574c3339Jerome Glisse const struct pipe_clip_state *state) 1445da246944a787b933a509f0b65bab466574c3339Jerome Glisse{ 1455da246944a787b933a509f0b65bab466574c3339Jerome Glisse} 1465da246944a787b933a509f0b65bab466574c3339Jerome Glisse 1475da246944a787b933a509f0b65bab466574c3339Jerome Glissestatic void noop_set_polygon_stipple(struct pipe_context *ctx, 1485da246944a787b933a509f0b65bab466574c3339Jerome Glisse const struct pipe_poly_stipple *state) 1495da246944a787b933a509f0b65bab466574c3339Jerome Glisse{ 1505da246944a787b933a509f0b65bab466574c3339Jerome Glisse} 1515da246944a787b933a509f0b65bab466574c3339Jerome Glisse 1525da246944a787b933a509f0b65bab466574c3339Jerome Glissestatic void noop_set_sample_mask(struct pipe_context *pipe, unsigned sample_mask) 1535da246944a787b933a509f0b65bab466574c3339Jerome Glisse{ 1545da246944a787b933a509f0b65bab466574c3339Jerome Glisse} 1555da246944a787b933a509f0b65bab466574c3339Jerome Glisse 1565da246944a787b933a509f0b65bab466574c3339Jerome Glissestatic void noop_set_scissor_state(struct pipe_context *ctx, 1575da246944a787b933a509f0b65bab466574c3339Jerome Glisse const struct pipe_scissor_state *state) 1585da246944a787b933a509f0b65bab466574c3339Jerome Glisse{ 1595da246944a787b933a509f0b65bab466574c3339Jerome Glisse} 1605da246944a787b933a509f0b65bab466574c3339Jerome Glisse 1615da246944a787b933a509f0b65bab466574c3339Jerome Glissestatic void noop_set_stencil_ref(struct pipe_context *ctx, 1625da246944a787b933a509f0b65bab466574c3339Jerome Glisse const struct pipe_stencil_ref *state) 1635da246944a787b933a509f0b65bab466574c3339Jerome Glisse{ 1645da246944a787b933a509f0b65bab466574c3339Jerome Glisse} 1655da246944a787b933a509f0b65bab466574c3339Jerome Glisse 1665da246944a787b933a509f0b65bab466574c3339Jerome Glissestatic void noop_set_viewport_state(struct pipe_context *ctx, 1675da246944a787b933a509f0b65bab466574c3339Jerome Glisse const struct pipe_viewport_state *state) 1685da246944a787b933a509f0b65bab466574c3339Jerome Glisse{ 1695da246944a787b933a509f0b65bab466574c3339Jerome Glisse} 1705da246944a787b933a509f0b65bab466574c3339Jerome Glisse 1715da246944a787b933a509f0b65bab466574c3339Jerome Glissestatic void noop_set_framebuffer_state(struct pipe_context *ctx, 1725da246944a787b933a509f0b65bab466574c3339Jerome Glisse const struct pipe_framebuffer_state *state) 1735da246944a787b933a509f0b65bab466574c3339Jerome Glisse{ 1745da246944a787b933a509f0b65bab466574c3339Jerome Glisse} 1755da246944a787b933a509f0b65bab466574c3339Jerome Glisse 1765da246944a787b933a509f0b65bab466574c3339Jerome Glissestatic void noop_set_constant_buffer(struct pipe_context *ctx, 1775da246944a787b933a509f0b65bab466574c3339Jerome Glisse uint shader, uint index, 178507337864fa80caf9f26602324d2c28dd0a75d61Marek Olšák struct pipe_constant_buffer *cb) 1795da246944a787b933a509f0b65bab466574c3339Jerome Glisse{ 1805da246944a787b933a509f0b65bab466574c3339Jerome Glisse} 1815da246944a787b933a509f0b65bab466574c3339Jerome Glisse 1825da246944a787b933a509f0b65bab466574c3339Jerome Glisse 1835da246944a787b933a509f0b65bab466574c3339Jerome Glissestatic void noop_sampler_view_destroy(struct pipe_context *ctx, 1845da246944a787b933a509f0b65bab466574c3339Jerome Glisse struct pipe_sampler_view *state) 1855da246944a787b933a509f0b65bab466574c3339Jerome Glisse{ 1865da246944a787b933a509f0b65bab466574c3339Jerome Glisse pipe_resource_reference(&state->texture, NULL); 1875da246944a787b933a509f0b65bab466574c3339Jerome Glisse FREE(state); 1885da246944a787b933a509f0b65bab466574c3339Jerome Glisse} 1895da246944a787b933a509f0b65bab466574c3339Jerome Glisse 1904c7001462607e6e99e474d6271dd481d3f8f201cRoland Scheidegger 1914c7001462607e6e99e474d6271dd481d3f8f201cRoland Scheideggerstatic void noop_surface_destroy(struct pipe_context *ctx, 1924c7001462607e6e99e474d6271dd481d3f8f201cRoland Scheidegger struct pipe_surface *surface) 1934c7001462607e6e99e474d6271dd481d3f8f201cRoland Scheidegger{ 1944c7001462607e6e99e474d6271dd481d3f8f201cRoland Scheidegger pipe_resource_reference(&surface->texture, NULL); 1954c7001462607e6e99e474d6271dd481d3f8f201cRoland Scheidegger FREE(surface); 1964c7001462607e6e99e474d6271dd481d3f8f201cRoland Scheidegger} 1974c7001462607e6e99e474d6271dd481d3f8f201cRoland Scheidegger 1985da246944a787b933a509f0b65bab466574c3339Jerome Glissestatic void noop_bind_state(struct pipe_context *ctx, void *state) 1995da246944a787b933a509f0b65bab466574c3339Jerome Glisse{ 2005da246944a787b933a509f0b65bab466574c3339Jerome Glisse} 2015da246944a787b933a509f0b65bab466574c3339Jerome Glisse 2025da246944a787b933a509f0b65bab466574c3339Jerome Glissestatic void noop_delete_state(struct pipe_context *ctx, void *state) 2035da246944a787b933a509f0b65bab466574c3339Jerome Glisse{ 2045da246944a787b933a509f0b65bab466574c3339Jerome Glisse FREE(state); 2055da246944a787b933a509f0b65bab466574c3339Jerome Glisse} 2065da246944a787b933a509f0b65bab466574c3339Jerome Glisse 2075da246944a787b933a509f0b65bab466574c3339Jerome Glissestatic void noop_delete_vertex_element(struct pipe_context *ctx, void *state) 2085da246944a787b933a509f0b65bab466574c3339Jerome Glisse{ 2095da246944a787b933a509f0b65bab466574c3339Jerome Glisse FREE(state); 2105da246944a787b933a509f0b65bab466574c3339Jerome Glisse} 2115da246944a787b933a509f0b65bab466574c3339Jerome Glisse 2125da246944a787b933a509f0b65bab466574c3339Jerome Glisse 2135da246944a787b933a509f0b65bab466574c3339Jerome Glissestatic void noop_set_index_buffer(struct pipe_context *ctx, 2145da246944a787b933a509f0b65bab466574c3339Jerome Glisse const struct pipe_index_buffer *ib) 2155da246944a787b933a509f0b65bab466574c3339Jerome Glisse{ 2165da246944a787b933a509f0b65bab466574c3339Jerome Glisse} 2175da246944a787b933a509f0b65bab466574c3339Jerome Glisse 2185da246944a787b933a509f0b65bab466574c3339Jerome Glissestatic void noop_set_vertex_buffers(struct pipe_context *ctx, unsigned count, 2195da246944a787b933a509f0b65bab466574c3339Jerome Glisse const struct pipe_vertex_buffer *buffers) 2205da246944a787b933a509f0b65bab466574c3339Jerome Glisse{ 2215da246944a787b933a509f0b65bab466574c3339Jerome Glisse} 2225da246944a787b933a509f0b65bab466574c3339Jerome Glisse 2235da246944a787b933a509f0b65bab466574c3339Jerome Glissestatic void *noop_create_vertex_elements(struct pipe_context *ctx, 2245da246944a787b933a509f0b65bab466574c3339Jerome Glisse unsigned count, 2255da246944a787b933a509f0b65bab466574c3339Jerome Glisse const struct pipe_vertex_element *state) 2265da246944a787b933a509f0b65bab466574c3339Jerome Glisse{ 2275da246944a787b933a509f0b65bab466574c3339Jerome Glisse struct pipe_vertex_element *nstate = CALLOC_STRUCT(pipe_vertex_element); 2285da246944a787b933a509f0b65bab466574c3339Jerome Glisse 2295da246944a787b933a509f0b65bab466574c3339Jerome Glisse if (nstate == NULL) { 2305da246944a787b933a509f0b65bab466574c3339Jerome Glisse return NULL; 2315da246944a787b933a509f0b65bab466574c3339Jerome Glisse } 2325da246944a787b933a509f0b65bab466574c3339Jerome Glisse *nstate = *state; 2335da246944a787b933a509f0b65bab466574c3339Jerome Glisse return nstate; 2345da246944a787b933a509f0b65bab466574c3339Jerome Glisse} 2355da246944a787b933a509f0b65bab466574c3339Jerome Glisse 2365da246944a787b933a509f0b65bab466574c3339Jerome Glissestatic void *noop_create_shader_state(struct pipe_context *ctx, 2375da246944a787b933a509f0b65bab466574c3339Jerome Glisse const struct pipe_shader_state *state) 2385da246944a787b933a509f0b65bab466574c3339Jerome Glisse{ 2395da246944a787b933a509f0b65bab466574c3339Jerome Glisse struct pipe_shader_state *nstate = CALLOC_STRUCT(pipe_shader_state); 2405da246944a787b933a509f0b65bab466574c3339Jerome Glisse 2415da246944a787b933a509f0b65bab466574c3339Jerome Glisse if (nstate == NULL) { 2425da246944a787b933a509f0b65bab466574c3339Jerome Glisse return NULL; 2435da246944a787b933a509f0b65bab466574c3339Jerome Glisse } 2445da246944a787b933a509f0b65bab466574c3339Jerome Glisse *nstate = *state; 2455da246944a787b933a509f0b65bab466574c3339Jerome Glisse return nstate; 2465da246944a787b933a509f0b65bab466574c3339Jerome Glisse} 2475da246944a787b933a509f0b65bab466574c3339Jerome Glisse 2486a00e4eaee19cdbc8423e53c22fc8a1d7fdd68ddMarek Olšákstatic struct pipe_stream_output_target *noop_create_stream_output_target( 2496a00e4eaee19cdbc8423e53c22fc8a1d7fdd68ddMarek Olšák struct pipe_context *ctx, 2506a00e4eaee19cdbc8423e53c22fc8a1d7fdd68ddMarek Olšák struct pipe_resource *res, 2516a00e4eaee19cdbc8423e53c22fc8a1d7fdd68ddMarek Olšák unsigned buffer_offset, 2526a00e4eaee19cdbc8423e53c22fc8a1d7fdd68ddMarek Olšák unsigned buffer_size) 2536a00e4eaee19cdbc8423e53c22fc8a1d7fdd68ddMarek Olšák{ 2546a00e4eaee19cdbc8423e53c22fc8a1d7fdd68ddMarek Olšák struct pipe_stream_output_target *t = CALLOC_STRUCT(pipe_stream_output_target); 2556a00e4eaee19cdbc8423e53c22fc8a1d7fdd68ddMarek Olšák if (!t) 2566a00e4eaee19cdbc8423e53c22fc8a1d7fdd68ddMarek Olšák return NULL; 2576a00e4eaee19cdbc8423e53c22fc8a1d7fdd68ddMarek Olšák 2586a00e4eaee19cdbc8423e53c22fc8a1d7fdd68ddMarek Olšák pipe_reference_init(&t->reference, 1); 2596a00e4eaee19cdbc8423e53c22fc8a1d7fdd68ddMarek Olšák pipe_resource_reference(&t->buffer, res); 2606a00e4eaee19cdbc8423e53c22fc8a1d7fdd68ddMarek Olšák t->buffer_offset = buffer_offset; 2616a00e4eaee19cdbc8423e53c22fc8a1d7fdd68ddMarek Olšák t->buffer_size = buffer_size; 2626a00e4eaee19cdbc8423e53c22fc8a1d7fdd68ddMarek Olšák return t; 2636a00e4eaee19cdbc8423e53c22fc8a1d7fdd68ddMarek Olšák} 2646a00e4eaee19cdbc8423e53c22fc8a1d7fdd68ddMarek Olšák 2656a00e4eaee19cdbc8423e53c22fc8a1d7fdd68ddMarek Olšákstatic void noop_stream_output_target_destroy(struct pipe_context *ctx, 2666a00e4eaee19cdbc8423e53c22fc8a1d7fdd68ddMarek Olšák struct pipe_stream_output_target *t) 2676a00e4eaee19cdbc8423e53c22fc8a1d7fdd68ddMarek Olšák{ 2686a00e4eaee19cdbc8423e53c22fc8a1d7fdd68ddMarek Olšák pipe_resource_reference(&t->buffer, NULL); 2696a00e4eaee19cdbc8423e53c22fc8a1d7fdd68ddMarek Olšák FREE(t); 2706a00e4eaee19cdbc8423e53c22fc8a1d7fdd68ddMarek Olšák} 2716a00e4eaee19cdbc8423e53c22fc8a1d7fdd68ddMarek Olšák 2726a00e4eaee19cdbc8423e53c22fc8a1d7fdd68ddMarek Olšákstatic void noop_set_stream_output_targets(struct pipe_context *ctx, 2736a00e4eaee19cdbc8423e53c22fc8a1d7fdd68ddMarek Olšák unsigned num_targets, 2746a00e4eaee19cdbc8423e53c22fc8a1d7fdd68ddMarek Olšák struct pipe_stream_output_target **targets, 2756a00e4eaee19cdbc8423e53c22fc8a1d7fdd68ddMarek Olšák unsigned append_bitmask) 2766a00e4eaee19cdbc8423e53c22fc8a1d7fdd68ddMarek Olšák{ 2776a00e4eaee19cdbc8423e53c22fc8a1d7fdd68ddMarek Olšák} 2786a00e4eaee19cdbc8423e53c22fc8a1d7fdd68ddMarek Olšák 279e72651dc5d70ed97e460e52ace692a70b3c9b50fVinson Leevoid noop_init_state_functions(struct pipe_context *ctx); 280e72651dc5d70ed97e460e52ace692a70b3c9b50fVinson Lee 2815da246944a787b933a509f0b65bab466574c3339Jerome Glissevoid noop_init_state_functions(struct pipe_context *ctx) 2825da246944a787b933a509f0b65bab466574c3339Jerome Glisse{ 2835da246944a787b933a509f0b65bab466574c3339Jerome Glisse ctx->create_blend_state = noop_create_blend_state; 2845da246944a787b933a509f0b65bab466574c3339Jerome Glisse ctx->create_depth_stencil_alpha_state = noop_create_dsa_state; 2855da246944a787b933a509f0b65bab466574c3339Jerome Glisse ctx->create_fs_state = noop_create_shader_state; 2865da246944a787b933a509f0b65bab466574c3339Jerome Glisse ctx->create_rasterizer_state = noop_create_rs_state; 2875da246944a787b933a509f0b65bab466574c3339Jerome Glisse ctx->create_sampler_state = noop_create_sampler_state; 2885da246944a787b933a509f0b65bab466574c3339Jerome Glisse ctx->create_sampler_view = noop_create_sampler_view; 2894c7001462607e6e99e474d6271dd481d3f8f201cRoland Scheidegger ctx->create_surface = noop_create_surface; 2905da246944a787b933a509f0b65bab466574c3339Jerome Glisse ctx->create_vertex_elements_state = noop_create_vertex_elements; 2915da246944a787b933a509f0b65bab466574c3339Jerome Glisse ctx->create_vs_state = noop_create_shader_state; 2925da246944a787b933a509f0b65bab466574c3339Jerome Glisse ctx->bind_blend_state = noop_bind_state; 2935da246944a787b933a509f0b65bab466574c3339Jerome Glisse ctx->bind_depth_stencil_alpha_state = noop_bind_state; 2945da246944a787b933a509f0b65bab466574c3339Jerome Glisse ctx->bind_fragment_sampler_states = noop_bind_sampler; 2955da246944a787b933a509f0b65bab466574c3339Jerome Glisse ctx->bind_fs_state = noop_bind_state; 2965da246944a787b933a509f0b65bab466574c3339Jerome Glisse ctx->bind_rasterizer_state = noop_bind_state; 2975da246944a787b933a509f0b65bab466574c3339Jerome Glisse ctx->bind_vertex_elements_state = noop_bind_state; 2985da246944a787b933a509f0b65bab466574c3339Jerome Glisse ctx->bind_vertex_sampler_states = noop_bind_sampler; 2995da246944a787b933a509f0b65bab466574c3339Jerome Glisse ctx->bind_vs_state = noop_bind_state; 3005da246944a787b933a509f0b65bab466574c3339Jerome Glisse ctx->delete_blend_state = noop_delete_state; 3015da246944a787b933a509f0b65bab466574c3339Jerome Glisse ctx->delete_depth_stencil_alpha_state = noop_delete_state; 3025da246944a787b933a509f0b65bab466574c3339Jerome Glisse ctx->delete_fs_state = noop_delete_state; 3035da246944a787b933a509f0b65bab466574c3339Jerome Glisse ctx->delete_rasterizer_state = noop_delete_state; 3045da246944a787b933a509f0b65bab466574c3339Jerome Glisse ctx->delete_sampler_state = noop_delete_state; 3055da246944a787b933a509f0b65bab466574c3339Jerome Glisse ctx->delete_vertex_elements_state = noop_delete_vertex_element; 3065da246944a787b933a509f0b65bab466574c3339Jerome Glisse ctx->delete_vs_state = noop_delete_state; 3075da246944a787b933a509f0b65bab466574c3339Jerome Glisse ctx->set_blend_color = noop_set_blend_color; 3085da246944a787b933a509f0b65bab466574c3339Jerome Glisse ctx->set_clip_state = noop_set_clip_state; 3095da246944a787b933a509f0b65bab466574c3339Jerome Glisse ctx->set_constant_buffer = noop_set_constant_buffer; 3105da246944a787b933a509f0b65bab466574c3339Jerome Glisse ctx->set_fragment_sampler_views = noop_set_ps_sampler_view; 3115da246944a787b933a509f0b65bab466574c3339Jerome Glisse ctx->set_framebuffer_state = noop_set_framebuffer_state; 3125da246944a787b933a509f0b65bab466574c3339Jerome Glisse ctx->set_polygon_stipple = noop_set_polygon_stipple; 3135da246944a787b933a509f0b65bab466574c3339Jerome Glisse ctx->set_sample_mask = noop_set_sample_mask; 3145da246944a787b933a509f0b65bab466574c3339Jerome Glisse ctx->set_scissor_state = noop_set_scissor_state; 3155da246944a787b933a509f0b65bab466574c3339Jerome Glisse ctx->set_stencil_ref = noop_set_stencil_ref; 3165da246944a787b933a509f0b65bab466574c3339Jerome Glisse ctx->set_vertex_buffers = noop_set_vertex_buffers; 3175da246944a787b933a509f0b65bab466574c3339Jerome Glisse ctx->set_index_buffer = noop_set_index_buffer; 3185da246944a787b933a509f0b65bab466574c3339Jerome Glisse ctx->set_vertex_sampler_views = noop_set_vs_sampler_view; 3195da246944a787b933a509f0b65bab466574c3339Jerome Glisse ctx->set_viewport_state = noop_set_viewport_state; 3205da246944a787b933a509f0b65bab466574c3339Jerome Glisse ctx->sampler_view_destroy = noop_sampler_view_destroy; 3214c7001462607e6e99e474d6271dd481d3f8f201cRoland Scheidegger ctx->surface_destroy = noop_surface_destroy; 3225da246944a787b933a509f0b65bab466574c3339Jerome Glisse ctx->draw_vbo = noop_draw_vbo; 3236a00e4eaee19cdbc8423e53c22fc8a1d7fdd68ddMarek Olšák ctx->create_stream_output_target = noop_create_stream_output_target; 3246a00e4eaee19cdbc8423e53c22fc8a1d7fdd68ddMarek Olšák ctx->stream_output_target_destroy = noop_stream_output_target_destroy; 3256a00e4eaee19cdbc8423e53c22fc8a1d7fdd68ddMarek Olšák ctx->set_stream_output_targets = noop_set_stream_output_targets; 3265da246944a787b933a509f0b65bab466574c3339Jerome Glisse} 327