Lines Matching refs:ctx
277 * Initialize fields of gl_current_attrib (aka ctx->Current.*)
280 _mesa_init_current(struct gl_context *ctx)
285 for (i = 0; i < ARRAY_SIZE(ctx->Current.Attrib); i++) {
286 ASSIGN_4V( ctx->Current.Attrib[i], 0.0, 0.0, 0.0, 1.0 );
290 ASSIGN_4V( ctx->Current.Attrib[VERT_ATTRIB_NORMAL], 0.0, 0.0, 1.0, 1.0 );
291 ASSIGN_4V( ctx->Current.Attrib[VERT_ATTRIB_COLOR0], 1.0, 1.0, 1.0, 1.0 );
292 ASSIGN_4V( ctx->Current.Attrib[VERT_ATTRIB_COLOR1], 0.0, 0.0, 0.0, 1.0 );
293 ASSIGN_4V( ctx->Current.Attrib[VERT_ATTRIB_COLOR_INDEX], 1.0, 0.0, 0.0, 1.0 );
294 ASSIGN_4V( ctx->Current.Attrib[VERT_ATTRIB_EDGEFLAG], 1.0, 0.0, 0.0, 1.0 );
398 * Initialize fields of gl_constants (aka ctx->Const.*).
620 check_context_limits(struct gl_context *ctx)
622 (void) ctx;
626 (8 * sizeof(ctx->VertexProgram._Current->info.outputs_written)));
628 (8 * sizeof(ctx->FragmentProgram._Current->info.inputs_read)));
631 assert(ctx->Const.Program[MESA_SHADER_FRAGMENT].MaxLocalParams <= MAX_PROGRAM_LOCAL_PARAMS);
632 assert(ctx->Const.Program[MESA_SHADER_VERTEX].MaxLocalParams <= MAX_PROGRAM_LOCAL_PARAMS);
635 assert(ctx->Const.Program[MESA_SHADER_FRAGMENT].MaxTextureImageUnits > 0);
636 assert(ctx->Const.Program[MESA_SHADER_FRAGMENT].MaxTextureImageUnits <= MAX_TEXTURE_IMAGE_UNITS);
637 assert(ctx->Const.MaxTextureCoordUnits > 0);
638 assert(ctx->Const.MaxTextureCoordUnits <= MAX_TEXTURE_COORD_UNITS);
639 assert(ctx->Const.MaxTextureUnits > 0);
640 assert(ctx->Const.MaxTextureUnits <= MAX_TEXTURE_IMAGE_UNITS);
641 assert(ctx->Const.MaxTextureUnits <= MAX_TEXTURE_COORD_UNITS);
642 assert(ctx->Const.MaxTextureUnits == MIN2(ctx->Const.Program[MESA_SHADER_FRAGMENT].MaxTextureImageUnits,
643 ctx->Const.MaxTextureCoordUnits));
644 assert(ctx->Const.MaxCombinedTextureImageUnits > 0);
645 assert(ctx->Const.MaxCombinedTextureImageUnits <= MAX_COMBINED_TEXTURE_IMAGE_UNITS);
646 assert(ctx->Const.MaxTextureCoordUnits <= MAX_COMBINED_TEXTURE_IMAGE_UNITS);
648 assert(ctx->Const.MaxTextureCoordUnits <= ctx->Const.Program[MESA_SHADER_FRAGMENT].MaxTextureImageUnits);
652 assert(ctx->Const.MaxTextureSize <= (1 << (MAX_TEXTURE_LEVELS - 1)));
653 assert(ctx->Const.Max3DTextureLevels <= MAX_TEXTURE_LEVELS);
654 assert(ctx->Const.MaxCubeTextureLevels <= MAX_TEXTURE_LEVELS);
655 assert(ctx->Const.MaxTextureRectSize <= MAX_TEXTURE_RECT_SIZE);
658 assert(ctx->Const.MaxTextureSize <= ctx->Const.MaxViewportWidth);
659 assert(ctx->Const.MaxTextureSize <= ctx->Const.MaxViewportHeight);
661 assert(ctx->Const.MaxDrawBuffers <= MAX_DRAW_BUFFERS);
673 * \param ctx GL context.
679 init_attrib_groups(struct gl_context *ctx)
681 assert(ctx);
684 _mesa_init_constants(&ctx->Const, ctx->API);
687 _mesa_init_extensions(&ctx->Extensions);
690 _mesa_init_accum( ctx );
691 _mesa_init_attrib( ctx );
692 _mesa_init_bbox( ctx );
693 _mesa_init_buffer_objects( ctx );
694 _mesa_init_color( ctx );
695 _mesa_init_conservative_raster( ctx );
696 _mesa_init_current( ctx );
697 _mesa_init_depth( ctx );
698 _mesa_init_debug( ctx );
699 _mesa_init_debug_output( ctx );
700 _mesa_init_display_list( ctx );
701 _mesa_init_eval( ctx );
702 _mesa_init_feedback( ctx );
703 _mesa_init_fog( ctx );
704 _mesa_init_hint( ctx );
705 _mesa_init_image_units( ctx );
706 _mesa_init_line( ctx );
707 _mesa_init_lighting( ctx );
708 _mesa_init_matrix( ctx );
709 _mesa_init_multisample( ctx );
710 _mesa_init_performance_monitors( ctx );
711 _mesa_init_performance_queries( ctx );
712 _mesa_init_pipeline( ctx );
713 _mesa_init_pixel( ctx );
714 _mesa_init_pixelstore( ctx );
715 _mesa_init_point( ctx );
716 _mesa_init_polygon( ctx );
717 _mesa_init_program( ctx );
718 _mesa_init_queryobj( ctx );
719 _mesa_init_sync( ctx );
720 _mesa_init_rastpos( ctx );
721 _mesa_init_scissor( ctx );
722 _mesa_init_shader_state( ctx );
723 _mesa_init_stencil( ctx );
724 _mesa_init_transform( ctx );
725 _mesa_init_transform_feedback( ctx );
726 _mesa_init_varray( ctx );
727 _mesa_init_viewport( ctx );
728 _mesa_init_resident_handles( ctx );
730 if (!_mesa_init_texture( ctx ))
734 ctx->TileRasterOrderIncreasingX = GL_TRUE;
735 ctx->TileRasterOrderIncreasingY = GL_TRUE;
736 ctx->NewState = _NEW_ALL;
737 ctx->NewDriverState = ~0;
738 ctx->ErrorValue = GL_NO_ERROR;
739 ctx->ShareGroupReset = false;
740 ctx->VertexProgram._VaryingInputs = VERT_BIT_ALL;
741 ctx->IntelBlackholeRender = env_var_as_boolean("INTEL_BLACKHOLE_DEFAULT", false);
750 * \param ctx GL context.
757 update_default_objects(struct gl_context *ctx)
759 assert(ctx);
761 _mesa_update_default_objects_program(ctx);
762 _mesa_update_default_objects_texture(ctx);
763 _mesa_update_default_objects_buffer_objects(ctx);
801 GET_CURRENT_CONTEXT(ctx);
802 if (ctx) {
803 _mesa_error(ctx, GL_INVALID_OPERATION, "%s(invalid call)", name);
833 GET_CURRENT_CONTEXT(ctx);
834 _mesa_error(ctx, GL_INVALID_OPERATION,
934 _mesa_initialize_dispatch_tables(struct gl_context *ctx)
937 _mesa_initialize_exec_table(ctx);
939 if (ctx->Save)
940 _mesa_initialize_save_table(ctx);
942 vbo_install_exec_vtxfmt(ctx);
943 if (ctx->API == API_OPENGL_COMPAT)
944 _mesa_install_save_vtxfmt(ctx);
965 * \param ctx the context to initialize
975 _mesa_initialize_context(struct gl_context *ctx,
985 ctx->API = api;
986 ctx->DrawBuffer = NULL;
987 ctx->ReadBuffer = NULL;
988 ctx->WinSysDrawBuffer = NULL;
989 ctx->WinSysReadBuffer = NULL;
992 ctx->Visual = *visual;
993 ctx->HasConfig = GL_TRUE;
996 memset(&ctx->Visual, 0, sizeof ctx->Visual);
997 ctx->HasConfig = GL_FALSE;
1000 _mesa_override_gl_version(ctx);
1007 * we'll call ctx->Driver.NewTextureObject() to create the default
1010 ctx->Driver = *driverFunctions;
1018 shared = _mesa_alloc_shared_state(ctx);
1024 ctx->Const.DriverSupportedPrimMask = 0xffffffff;
1026 _mesa_reference_shared_state(ctx, &ctx->Shared, shared);
1028 if (!init_attrib_groups( ctx ))
1032 ctx->Const.ContextFlags |= GL_CONTEXT_FLAG_NO_ERROR_BIT_KHR;
1035 ctx->OutsideBeginEnd = _mesa_alloc_dispatch_table(false);
1036 if (!ctx->OutsideBeginEnd)
1038 ctx->Exec = ctx->OutsideBeginEnd;
1039 ctx->CurrentClientDispatch = ctx->CurrentServerDispatch = ctx->OutsideBeginEnd;
1041 _mesa_reset_vertex_processing_mode(ctx);
1047 memset(&ctx->TextureFormatSupported, GL_TRUE,
1048 sizeof(ctx->TextureFormatSupported));
1050 switch (ctx->API) {
1052 ctx->BeginEnd = _mesa_alloc_dispatch_table(false);
1053 ctx->Save = _mesa_alloc_dispatch_table(false);
1054 if (!ctx->BeginEnd || !ctx->Save)
1066 for (i = 0; i < ARRAY_SIZE(ctx->Texture.FixedFuncUnit); i++) {
1068 &ctx->Texture.FixedFuncUnit[i];
1079 ctx->VertexProgram.PointSizeEnabled = ctx->API == API_OPENGLES2;
1080 ctx->PointSizeIsSet = GL_TRUE;
1082 ctx->FirstTimeCurrent = GL_TRUE;
1087 _mesa_reference_shared_state(ctx, &ctx->Shared, NULL);
1088 free(ctx->BeginEnd);
1089 free(ctx->OutsideBeginEnd);
1090 free(ctx->Save);
1103 _mesa_free_context_data(struct gl_context *ctx, bool destroy_debug_output)
1109 _mesa_make_current(ctx, NULL, NULL);
1113 _mesa_reference_framebuffer(&ctx->WinSysDrawBuffer, NULL);
1114 _mesa_reference_framebuffer(&ctx->WinSysReadBuffer, NULL);
1115 _mesa_reference_framebuffer(&ctx->DrawBuffer, NULL);
1116 _mesa_reference_framebuffer(&ctx->ReadBuffer, NULL);
1118 _mesa_reference_program(ctx, &ctx->VertexProgram.Current, NULL);
1119 _mesa_reference_program(ctx, &ctx->VertexProgram._Current, NULL);
1120 _mesa_reference_program(ctx, &ctx->VertexProgram._TnlProgram, NULL);
1122 _mesa_reference_program(ctx, &ctx->TessCtrlProgram._Current, NULL);
1123 _mesa_reference_program(ctx, &ctx->TessEvalProgram._Current, NULL);
1124 _mesa_reference_program(ctx, &ctx->GeometryProgram._Current, NULL);
1126 _mesa_reference_program(ctx, &ctx->FragmentProgram.Current, NULL);
1127 _mesa_reference_program(ctx, &ctx->FragmentProgram._Current, NULL);
1128 _mesa_reference_program(ctx, &ctx->FragmentProgram._TexEnvProgram, NULL);
1130 _mesa_reference_program(ctx, &ctx->ComputeProgram._Current, NULL);
1132 _mesa_reference_vao(ctx, &ctx->Array.VAO, NULL);
1133 _mesa_reference_vao(ctx, &ctx->Array.DefaultVAO, NULL);
1134 _mesa_reference_vao(ctx, &ctx->Array._EmptyVAO, NULL);
1135 _mesa_reference_vao(ctx, &ctx->Array._DrawVAO, NULL);
1137 _mesa_free_attrib_data(ctx);
1138 _mesa_free_eval_data( ctx );
1139 _mesa_free_feedback(ctx);
1140 _mesa_free_texture_data( ctx );
1141 _mesa_free_image_textures(ctx);
1142 _mesa_free_matrix_data( ctx );
1143 _mesa_free_pipeline_data(ctx);
1144 _mesa_free_program_data(ctx);
1145 _mesa_free_shader_state(ctx);
1146 _mesa_free_queryobj_data(ctx);
1147 _mesa_free_sync_data(ctx);
1148 _mesa_free_varray_data(ctx);
1149 _mesa_free_transform_feedback(ctx);
1150 _mesa_free_performance_monitors(ctx);
1151 _mesa_free_performance_queries(ctx);
1152 _mesa_free_perfomance_monitor_groups(ctx);
1153 _mesa_free_resident_handles(ctx);
1155 _mesa_reference_buffer_object(ctx, &ctx->Pack.BufferObj, NULL);
1156 _mesa_reference_buffer_object(ctx, &ctx->Unpack.BufferObj, NULL);
1157 _mesa_reference_buffer_object(ctx, &ctx->DefaultPacking.BufferObj, NULL);
1158 _mesa_reference_buffer_object(ctx, &ctx->Array.ArrayBufferObj, NULL);
1163 _mesa_free_buffer_objects(ctx);
1166 free(ctx->BeginEnd);
1167 free(ctx->OutsideBeginEnd);
1168 free(ctx->Save);
1169 free(ctx->ContextLost);
1170 free(ctx->MarshalExec);
1171 free(ctx->HWSelectModeBeginEnd);
1174 _mesa_reference_shared_state(ctx, &ctx->Shared, NULL);
1177 _mesa_destroy_debug_output(ctx);
1179 free((void *)ctx->Extensions.String);
1181 free(ctx->VersionString);
1183 ralloc_free(ctx->SoftFP64);
1186 if (ctx == _mesa_get_current_context()) {
1191 if (ctx->shader_builtin_ref) {
1193 ctx->shader_builtin_ref = false;
1196 free(ctx->Const.SpirVExtensions);
1318 check_compatible(const struct gl_context *ctx,
1321 const struct gl_config *ctxvis = &ctx->Visual;
1352 check_init_viewport(struct gl_context *ctx, GLuint width, GLuint height)
1354 if (!ctx->ViewportInitialized && width > 0 && height > 0) {
1360 ctx->ViewportInitialized = GL_TRUE;
1362 /* Note: ctx->Const.MaxViewports may not have been set by the driver
1366 _mesa_set_viewport(ctx, i, 0, 0, width, height);
1367 _mesa_set_scissor(ctx, i, 0, 0, width, height);
1374 handle_first_current(struct gl_context *ctx)
1376 if (ctx->Version == 0 || !ctx->DrawBuffer) {
1381 check_context_limits(ctx);
1383 _mesa_update_vertex_processing_mode(ctx);
1389 if (!ctx->HasConfig && _mesa_is_desktop_gl(ctx)) {
1390 if (ctx->DrawBuffer != _mesa_get_incomplete_framebuffer()) {
1393 if (ctx->DrawBuffer->Visual.doubleBufferMode)
1398 _mesa_drawbuffers(ctx, ctx->DrawBuffer, 1, &buffer,
1402 if (ctx->ReadBuffer != _mesa_get_incomplete_framebuffer()) {
1406 if (ctx->ReadBuffer->Visual.doubleBufferMode) {
1415 _mesa_readbuffer(ctx, ctx->ReadBuffer, buffer, bufferIndex);
1424 ctx->Const.ContextFlags & GL_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT;
1431 ctx->_AttribZeroAliasesVertex = (ctx->API == API_OPENGLES
1432 || (ctx->API == API_OPENGL_COMPAT
1442 _mesa_print_info(ctx);
1503 /* We need old ctx to correctly release Draw/ReadBuffer
1505 * Therefore, first drop buffers then set new ctx to NULL.
1572 * Make context 'ctx' share the display lists, textures and programs
1574 * Any display lists, textures or programs associated with 'ctx' will
1578 _mesa_share_state(struct gl_context *ctx, struct gl_context *ctxToShare)
1580 if (ctx && ctxToShare && ctx->Shared && ctxToShare->Shared) {
1584 _mesa_reference_shared_state(ctx, &oldShared, ctx->Shared);
1586 /* update ctx's Shared pointer */
1587 _mesa_reference_shared_state(ctx, &ctx->Shared, ctxToShare->Shared);
1589 update_default_objects(ctx);
1592 _mesa_reference_shared_state(ctx, &oldShared, NULL);
1623 * \param ctx GL context.
1630 _mesa_get_dispatch(struct gl_context *ctx)
1632 return ctx->CurrentClientDispatch;
1646 _mesa_flush(struct gl_context *ctx)
1648 bool async = !ctx->Shared->HasExternallySharedImages;
1649 FLUSH_VERTICES(ctx, 0, 0);
1651 st_glFlush(ctx, async ? PIPE_FLUSH_ASYNC : 0);
1665 GET_CURRENT_CONTEXT(ctx);
1666 ASSERT_OUTSIDE_BEGIN_END(ctx);
1668 FLUSH_VERTICES(ctx, 0, 0);
1670 st_glFinish(ctx);
1683 GET_CURRENT_CONTEXT(ctx);
1684 ASSERT_OUTSIDE_BEGIN_END(ctx);
1685 _mesa_flush(ctx);