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