*
**************************************************************************/
-#include "main/imports.h"
+
#include "main/accum.h"
#include "main/api_exec.h"
#include "main/context.h"
#include "util/u_inlines.h"
#include "util/u_upload_mgr.h"
#include "util/u_vbuf.h"
+#include "util/u_memory.h"
#include "cso_cache/cso_context.h"
#include "compiler/glsl/glsl_parser_extras.h"
case GL_DEBUG_OUTPUT_SYNCHRONOUS:
st_update_debug_callback(st);
break;
+ case GL_BLACKHOLE_RENDER_INTEL:
+ st->pipe->set_frontend_noop(st->pipe, ctx->IntelBlackholeRender);
+ break;
default:
break;
}
if (new_state & _NEW_FOG)
st->dirty |= ST_NEW_FS_STATE;
-
- if (new_state & _NEW_FRAG_CLAMP) {
- if (st->clamp_frag_color_in_shader)
- st->dirty |= ST_NEW_FS_STATE;
- else
- st->dirty |= ST_NEW_RASTERIZER;
- }
}
if (new_state & (_NEW_LIGHT |
switch (entry->type) {
case PIPE_SHADER_VERTEX:
- cso_delete_vertex_shader(st->cso_context, entry->shader);
+ st->pipe->bind_vs_state(st->pipe, NULL);
+ st->pipe->delete_vs_state(st->pipe, entry->shader);
break;
case PIPE_SHADER_FRAGMENT:
- cso_delete_fragment_shader(st->cso_context, entry->shader);
+ st->pipe->bind_fs_state(st->pipe, NULL);
+ st->pipe->delete_fs_state(st->pipe, entry->shader);
break;
case PIPE_SHADER_GEOMETRY:
- cso_delete_geometry_shader(st->cso_context, entry->shader);
+ st->pipe->bind_gs_state(st->pipe, NULL);
+ st->pipe->delete_gs_state(st->pipe, entry->shader);
break;
case PIPE_SHADER_TESS_CTRL:
- cso_delete_tessctrl_shader(st->cso_context, entry->shader);
+ st->pipe->bind_tcs_state(st->pipe, NULL);
+ st->pipe->delete_tcs_state(st->pipe, entry->shader);
break;
case PIPE_SHADER_TESS_EVAL:
- cso_delete_tesseval_shader(st->cso_context, entry->shader);
+ st->pipe->bind_tes_state(st->pipe, NULL);
+ st->pipe->delete_tes_state(st->pipe, entry->shader);
break;
case PIPE_SHADER_COMPUTE:
- cso_delete_compute_shader(st->cso_context, entry->shader);
+ st->pipe->bind_compute_state(st->pipe, NULL);
+ st->pipe->delete_compute_state(st->pipe, entry->shader);
break;
default:
unreachable("invalid shader type in free_zombie_shaders()");
f->NewClipControl = ST_NEW_VIEWPORT | ST_NEW_RASTERIZER;
f->NewClipPlane = ST_NEW_CLIP_STATE;
+ if (st->clamp_frag_color_in_shader) {
+ f->NewFragClamp = ST_NEW_FS_STATE;
+ } else {
+ f->NewFragClamp = ST_NEW_RASTERIZER;
+ }
+
if (st->clamp_frag_depth_in_shader) {
f->NewClipControl |= ST_NEW_VS_STATE | ST_NEW_GS_STATE |
ST_NEW_TES_STATE;
* profile, so that u_vbuf is bypassed completely if there is nothing else
* to do.
*/
- unsigned cso_flags =
- ctx->API == API_OPENGL_CORE ? CSO_NO_USER_VERTEX_BUFFERS : 0;
+ unsigned cso_flags;
+ switch (ctx->API) {
+ case API_OPENGL_CORE:
+ cso_flags = CSO_NO_USER_VERTEX_BUFFERS;
+ break;
+ case API_OPENGLES:
+ case API_OPENGLES2:
+ cso_flags = CSO_NO_64B_VERTEX_BUFFERS;
+ break;
+ default:
+ cso_flags = 0;
+ break;
+ }
+
st->cso_context = cso_create_context(pipe, cso_flags);
st_init_atoms(st);
STATIC_ASSERT(sizeof(struct st_util_vertex) == 9 * sizeof(float));
memset(&st->util_velems, 0, sizeof(st->util_velems));
- st->util_velems[0].src_offset = 0;
- st->util_velems[0].vertex_buffer_index = 0;
- st->util_velems[0].src_format = PIPE_FORMAT_R32G32B32_FLOAT;
- st->util_velems[1].src_offset = 3 * sizeof(float);
- st->util_velems[1].vertex_buffer_index = 0;
- st->util_velems[1].src_format = PIPE_FORMAT_R32G32B32A32_FLOAT;
- st->util_velems[2].src_offset = 7 * sizeof(float);
- st->util_velems[2].vertex_buffer_index = 0;
- st->util_velems[2].src_format = PIPE_FORMAT_R32G32_FLOAT;
+ st->util_velems.velems[0].src_offset = 0;
+ st->util_velems.velems[0].vertex_buffer_index = 0;
+ st->util_velems.velems[0].src_format = PIPE_FORMAT_R32G32B32_FLOAT;
+ st->util_velems.velems[1].src_offset = 3 * sizeof(float);
+ st->util_velems.velems[1].vertex_buffer_index = 0;
+ st->util_velems.velems[1].src_format = PIPE_FORMAT_R32G32B32A32_FLOAT;
+ st->util_velems.velems[2].src_offset = 7 * sizeof(float);
+ st->util_velems.velems[2].vertex_buffer_index = 0;
+ st->util_velems.velems[2].src_format = PIPE_FORMAT_R32G32_FLOAT;
}
/* Need these flags:
simple_mtx_destroy(&st->zombie_sampler_views.mutex);
simple_mtx_destroy(&st->zombie_shaders.mutex);
- st_reference_prog(st, &st->fp, NULL);
- st_reference_prog(st, &st->gp, NULL);
- st_reference_prog(st, &st->vp, NULL);
- st_reference_prog(st, &st->tcp, NULL);
- st_reference_prog(st, &st->tep, NULL);
- st_reference_prog(st, &st->cp, NULL);
+ st_release_program(st, &st->fp);
+ st_release_program(st, &st->gp);
+ st_release_program(st, &st->vp);
+ st_release_program(st, &st->tcp);
+ st_release_program(st, &st->tep);
+ st_release_program(st, &st->cp);
/* release framebuffer in the winsys buffers list */
LIST_FOR_EACH_ENTRY_SAFE_REV(stfb, next, &st->winsys_buffers, head) {