Lines Matching refs:ctx

57 _mesa_lookup_samplerobj(struct gl_context *ctx, GLuint name)
63 _mesa_HashLookup(ctx->Shared->SamplerObjects, name);
67 lookup_samplerobj_locked(struct gl_context *ctx, GLuint name)
70 _mesa_HashLookupLocked(ctx->Shared->SamplerObjects, name);
74 delete_sampler_object(struct gl_context *ctx,
77 _mesa_delete_sampler_handles(ctx, sampObj);
86 _mesa_reference_sampler_object_(struct gl_context *ctx,
99 delete_sampler_object(ctx, oldSamp);
161 _mesa_new_sampler_object(struct gl_context *ctx, GLuint name)
171 create_samplers(struct gl_context *ctx, GLsizei count, GLuint *samplers,
179 _mesa_HashLockMutex(ctx->Shared->SamplerObjects);
181 _mesa_HashFindFreeKeys(ctx->Shared->SamplerObjects, samplers, count);
187 sampObj = _mesa_new_sampler_object(ctx, samplers[i]);
189 _mesa_HashUnlockMutex(ctx->Shared->SamplerObjects);
190 _mesa_error(ctx, GL_OUT_OF_MEMORY, "%s", caller);
194 _mesa_HashInsertLocked(ctx->Shared->SamplerObjects, samplers[i],
198 _mesa_HashUnlockMutex(ctx->Shared->SamplerObjects);
202 create_samplers_err(struct gl_context *ctx, GLsizei count, GLuint *samplers,
207 _mesa_debug(ctx, "%s(%d)\n", caller, count);
210 _mesa_error(ctx, GL_INVALID_VALUE, "%s(n<0)", caller);
214 create_samplers(ctx, count, samplers, caller);
220 GET_CURRENT_CONTEXT(ctx);
221 create_samplers(ctx, count, samplers, "glGenSamplers");
227 GET_CURRENT_CONTEXT(ctx);
228 create_samplers_err(ctx, count, samplers, "glGenSamplers");
234 GET_CURRENT_CONTEXT(ctx);
235 create_samplers(ctx, count, samplers, "glCreateSamplers");
241 GET_CURRENT_CONTEXT(ctx);
242 create_samplers_err(ctx, count, samplers, "glCreateSamplers");
247 delete_samplers(struct gl_context *ctx, GLsizei count, const GLuint *samplers)
249 FLUSH_VERTICES(ctx, 0, 0);
251 _mesa_HashLockMutex(ctx->Shared->SamplerObjects);
257 lookup_samplerobj_locked(ctx, samplers[i]);
261 for (j = 0; j < ctx->Const.MaxCombinedTextureImageUnits; j++) {
262 if (ctx->Texture.Unit[j].Sampler == sampObj) {
263 FLUSH_VERTICES(ctx, _NEW_TEXTURE_OBJECT, GL_TEXTURE_BIT);
264 _mesa_reference_sampler_object(ctx, &ctx->Texture.Unit[j].Sampler, NULL);
269 _mesa_HashRemoveLocked(ctx->Shared->SamplerObjects, samplers[i]);
271 _mesa_reference_sampler_object(ctx, &sampObj, NULL);
276 _mesa_HashUnlockMutex(ctx->Shared->SamplerObjects);
283 GET_CURRENT_CONTEXT(ctx);
284 delete_samplers(ctx, count, samplers);
291 GET_CURRENT_CONTEXT(ctx);
294 _mesa_error(ctx, GL_INVALID_VALUE, "glDeleteSamplers(count)");
298 delete_samplers(ctx, count, samplers);
305 GET_CURRENT_CONTEXT(ctx);
307 ASSERT_OUTSIDE_BEGIN_END_WITH_RETVAL(ctx, GL_FALSE);
309 return _mesa_lookup_samplerobj(ctx, sampler) != NULL;
313 _mesa_bind_sampler(struct gl_context *ctx, GLuint unit,
316 if (ctx->Texture.Unit[unit].Sampler != sampObj) {
317 FLUSH_VERTICES(ctx, _NEW_TEXTURE_OBJECT, GL_TEXTURE_BIT);
320 _mesa_reference_sampler_object(ctx, &ctx->Texture.Unit[unit].Sampler,
325 bind_sampler(struct gl_context *ctx, GLuint unit, GLuint sampler, bool no_error)
336 sampObj = _mesa_lookup_samplerobj(ctx, sampler);
338 _mesa_error(ctx, GL_INVALID_OPERATION, "glBindSampler(sampler)");
344 _mesa_bind_sampler(ctx, unit, sampObj);
350 GET_CURRENT_CONTEXT(ctx);
351 bind_sampler(ctx, unit, sampler, true);
357 GET_CURRENT_CONTEXT(ctx);
359 if (unit >= ctx->Const.MaxCombinedTextureImageUnits) {
360 _mesa_error(ctx, GL_INVALID_VALUE, "glBindSampler(unit %u)", unit);
364 bind_sampler(ctx, unit, sampler, false);
369 bind_samplers(struct gl_context *ctx, GLuint first, GLsizei count,
374 FLUSH_VERTICES(ctx, 0, 0);
396 _mesa_HashLockMutex(ctx->Shared->SamplerObjects);
401 ctx->Texture.Unit[unit].Sampler;
408 sampObj = lookup_samplerobj_locked(ctx, samplers[i]);
417 _mesa_error(ctx, GL_INVALID_OPERATION,
429 _mesa_reference_sampler_object(ctx,
430 &ctx->Texture.Unit[unit].Sampler,
432 ctx->NewState |= _NEW_TEXTURE_OBJECT;
433 ctx->PopAttribState |= GL_TEXTURE_BIT;
437 _mesa_HashUnlockMutex(ctx->Shared->SamplerObjects);
443 if (ctx->Texture.Unit[unit].Sampler) {
444 _mesa_reference_sampler_object(ctx,
445 &ctx->Texture.Unit[unit].Sampler,
447 ctx->NewState |= _NEW_TEXTURE_OBJECT;
448 ctx->PopAttribState |= GL_TEXTURE_BIT;
458 GET_CURRENT_CONTEXT(ctx);
459 bind_samplers(ctx, first, count, samplers, true);
466 GET_CURRENT_CONTEXT(ctx);
474 if (first + count > ctx->Const.MaxCombinedTextureImageUnits) {
475 _mesa_error(ctx, GL_INVALID_OPERATION,
478 first, count, ctx->Const.MaxCombinedTextureImageUnits);
482 bind_samplers(ctx, first, count, samplers, false);
491 validate_texture_wrap_mode(struct gl_context *ctx, GLenum wrap)
493 const struct gl_extensions * const e = &ctx->Extensions;
504 return ctx->API == API_OPENGL_COMPAT;
526 flush(struct gl_context *ctx)
528 FLUSH_VERTICES(ctx, _NEW_TEXTURE_OBJECT, GL_TEXTURE_BIT);
536 set_sampler_wrap_s(struct gl_context *ctx, struct gl_sampler_object *samp,
541 if (validate_texture_wrap_mode(ctx, param)) {
542 flush(ctx);
543 update_sampler_gl_clamp(ctx, samp, is_wrap_gl_clamp(samp->Attrib.WrapS), is_wrap_gl_clamp(param), WRAP_S);
546 _mesa_lower_gl_clamp(ctx, samp);
554 set_sampler_wrap_t(struct gl_context *ctx, struct gl_sampler_object *samp,
559 if (validate_texture_wrap_mode(ctx, param)) {
560 flush(ctx);
561 update_sampler_gl_clamp(ctx, samp, is_wrap_gl_clamp(samp->Attrib.WrapT), is_wrap_gl_clamp(param), WRAP_T);
564 _mesa_lower_gl_clamp(ctx, samp);
572 set_sampler_wrap_r(struct gl_context *ctx, struct gl_sampler_object *samp,
577 if (validate_texture_wrap_mode(ctx, param)) {
578 flush(ctx);
579 update_sampler_gl_clamp(ctx, samp, is_wrap_gl_clamp(samp->Attrib.WrapR), is_wrap_gl_clamp(param), WRAP_R);
582 _mesa_lower_gl_clamp(ctx, samp);
589 set_sampler_min_filter(struct gl_context *ctx, struct gl_sampler_object *samp,
602 flush(ctx);
606 _mesa_lower_gl_clamp(ctx, samp);
615 set_sampler_mag_filter(struct gl_context *ctx, struct gl_sampler_object *samp,
624 flush(ctx);
627 _mesa_lower_gl_clamp(ctx, samp);
636 set_sampler_lod_bias(struct gl_context *ctx, struct gl_sampler_object *samp,
642 flush(ctx);
650 set_sampler_border_colorf(struct gl_context *ctx,
654 flush(ctx);
662 set_sampler_border_colori(struct gl_context *ctx,
666 flush(ctx);
674 set_sampler_border_colorui(struct gl_context *ctx,
678 flush(ctx);
686 set_sampler_min_lod(struct gl_context *ctx, struct gl_sampler_object *samp,
692 flush(ctx);
701 set_sampler_max_lod(struct gl_context *ctx, struct gl_sampler_object *samp,
707 flush(ctx);
715 set_sampler_compare_mode(struct gl_context *ctx,
722 if (!ctx->Extensions.ARB_shadow)
730 flush(ctx);
740 set_sampler_compare_func(struct gl_context *ctx,
747 if (!ctx->Extensions.ARB_shadow)
762 flush(ctx);
773 set_sampler_max_anisotropy(struct gl_context *ctx,
776 if (!ctx->Extensions.EXT_texture_filter_anisotropic)
785 flush(ctx);
787 samp->Attrib.MaxAnisotropy = MIN2(param, ctx->Const.MaxTextureMaxAnisotropy);
796 set_sampler_cube_map_seamless(struct gl_context *ctx,
799 if (!_mesa_is_desktop_gl(ctx)
800 || !ctx->Extensions.AMD_seamless_cubemap_per_texture)
809 flush(ctx);
816 set_sampler_srgb_decode(struct gl_context *ctx,
819 if (!ctx->Extensions.EXT_texture_sRGB_decode)
839 flush(ctx);
845 set_sampler_reduction_mode(struct gl_context *ctx,
848 if (!ctx->Extensions.EXT_texture_filter_minmax &&
849 !_mesa_has_ARB_texture_filter_minmax(ctx))
858 flush(ctx);
865 sampler_parameter_error_check(struct gl_context *ctx, GLuint sampler,
870 sampObj = _mesa_lookup_samplerobj(ctx, sampler);
879 _mesa_error(ctx, GL_INVALID_OPERATION, "%s(invalid sampler)", name);
890 _mesa_error(ctx, GL_INVALID_OPERATION, "%s(immutable sampler)", name);
902 GET_CURRENT_CONTEXT(ctx);
904 sampObj = sampler_parameter_error_check(ctx, sampler, false,
911 res = set_sampler_wrap_s(ctx, sampObj, param);
914 res = set_sampler_wrap_t(ctx, sampObj, param);
917 res = set_sampler_wrap_r(ctx, sampObj, param);
920 res = set_sampler_min_filter(ctx, sampObj, param);
923 res = set_sampler_mag_filter(ctx, sampObj, param);
926 res = set_sampler_min_lod(ctx, sampObj, (GLfloat) param);
929 res = set_sampler_max_lod(ctx, sampObj, (GLfloat) param);
932 res = set_sampler_lod_bias(ctx, sampObj, (GLfloat) param);
935 res = set_sampler_compare_mode(ctx, sampObj, param);
938 res = set_sampler_compare_func(ctx, sampObj, param);
941 res = set_sampler_max_anisotropy(ctx, sampObj, (GLfloat) param);
944 res = set_sampler_cube_map_seamless(ctx, sampObj, param);
947 res = set_sampler_srgb_decode(ctx, sampObj, param);
950 res = set_sampler_reduction_mode(ctx, sampObj, param);
966 _mesa_error(ctx, GL_INVALID_ENUM, "glSamplerParameteri(pname=%s)\n",
970 _mesa_error(ctx, GL_INVALID_ENUM, "glSamplerParameteri(param=%d)\n",
974 _mesa_error(ctx, GL_INVALID_VALUE, "glSamplerParameteri(param=%d)\n",
988 GET_CURRENT_CONTEXT(ctx);
990 sampObj = sampler_parameter_error_check(ctx, sampler, false,
997 res = set_sampler_wrap_s(ctx, sampObj, (GLint) param);
1000 res = set_sampler_wrap_t(ctx, sampObj, (GLint) param);
1003 res = set_sampler_wrap_r(ctx, sampObj, (GLint) param);
1006 res = set_sampler_min_filter(ctx, sampObj, (GLint) param);
1009 res = set_sampler_mag_filter(ctx, sampObj, (GLint) param);
1012 res = set_sampler_min_lod(ctx, sampObj, param);
1015 res = set_sampler_max_lod(ctx, sampObj, param);
1018 res = set_sampler_lod_bias(ctx, sampObj, param);
1021 res = set_sampler_compare_mode(ctx, sampObj, (GLint) param);
1024 res = set_sampler_compare_func(ctx, sampObj, (GLint) param);
1027 res = set_sampler_max_anisotropy(ctx, sampObj, param);
1030 res = set_sampler_cube_map_seamless(ctx, sampObj, (GLboolean) param);
1033 res = set_sampler_srgb_decode(ctx, sampObj, (GLenum) param);
1036 res = set_sampler_reduction_mode(ctx, sampObj, (GLenum) param);
1052 _mesa_error(ctx, GL_INVALID_ENUM, "glSamplerParameterf(pname=%s)\n",
1056 _mesa_error(ctx, GL_INVALID_ENUM, "glSamplerParameterf(param=%f)\n",
1060 _mesa_error(ctx, GL_INVALID_VALUE, "glSamplerParameterf(param=%f)\n",
1073 GET_CURRENT_CONTEXT(ctx);
1075 sampObj = sampler_parameter_error_check(ctx, sampler, false,
1082 res = set_sampler_wrap_s(ctx, sampObj, params[0]);
1085 res = set_sampler_wrap_t(ctx, sampObj, params[0]);
1088 res = set_sampler_wrap_r(ctx, sampObj, params[0]);
1091 res = set_sampler_min_filter(ctx, sampObj, params[0]);
1094 res = set_sampler_mag_filter(ctx, sampObj, params[0]);
1097 res = set_sampler_min_lod(ctx, sampObj, (GLfloat) params[0]);
1100 res = set_sampler_max_lod(ctx, sampObj, (GLfloat) params[0]);
1103 res = set_sampler_lod_bias(ctx, sampObj, (GLfloat) params[0]);
1106 res = set_sampler_compare_mode(ctx, sampObj, params[0]);
1109 res = set_sampler_compare_func(ctx, sampObj, params[0]);
1112 res = set_sampler_max_anisotropy(ctx, sampObj, (GLfloat) params[0]);
1115 res = set_sampler_cube_map_seamless(ctx, sampObj, params[0]);
1118 res = set_sampler_srgb_decode(ctx, sampObj, params[0]);
1121 res = set_sampler_reduction_mode(ctx, sampObj, params[0]);
1130 res = set_sampler_border_colorf(ctx, sampObj, c);
1145 _mesa_error(ctx, GL_INVALID_ENUM, "glSamplerParameteriv(pname=%s)\n",
1149 _mesa_error(ctx, GL_INVALID_ENUM, "glSamplerParameteriv(param=%d)\n",
1153 _mesa_error(ctx, GL_INVALID_VALUE, "glSamplerParameteriv(param=%d)\n",
1166 GET_CURRENT_CONTEXT(ctx);
1168 sampObj = sampler_parameter_error_check(ctx, sampler, false,
1175 res = set_sampler_wrap_s(ctx, sampObj, (GLint) params[0]);
1178 res = set_sampler_wrap_t(ctx, sampObj, (GLint) params[0]);
1181 res = set_sampler_wrap_r(ctx, sampObj, (GLint) params[0]);
1184 res = set_sampler_min_filter(ctx, sampObj, (GLint) params[0]);
1187 res = set_sampler_mag_filter(ctx, sampObj, (GLint) params[0]);
1190 res = set_sampler_min_lod(ctx, sampObj, params[0]);
1193 res = set_sampler_max_lod(ctx, sampObj, params[0]);
1196 res = set_sampler_lod_bias(ctx, sampObj, params[0]);
1199 res = set_sampler_compare_mode(ctx, sampObj, (GLint) params[0]);
1202 res = set_sampler_compare_func(ctx, sampObj, (GLint) params[0]);
1205 res = set_sampler_max_anisotropy(ctx, sampObj, params[0]);
1208 res = set_sampler_cube_map_seamless(ctx, sampObj, (GLboolean) params[0]);
1211 res = set_sampler_srgb_decode(ctx, sampObj, (GLenum) params[0]);
1214 res = set_sampler_reduction_mode(ctx, sampObj, (GLenum) params[0]);
1217 res = set_sampler_border_colorf(ctx, sampObj, params);
1231 _mesa_error(ctx, GL_INVALID_ENUM, "glSamplerParameterfv(pname=%s)\n",
1235 _mesa_error(ctx, GL_INVALID_ENUM, "glSamplerParameterfv(param=%f)\n",
1239 _mesa_error(ctx, GL_INVALID_VALUE, "glSamplerParameterfv(param=%f)\n",
1252 GET_CURRENT_CONTEXT(ctx);
1254 sampObj = sampler_parameter_error_check(ctx, sampler, false,
1261 res = set_sampler_wrap_s(ctx, sampObj, params[0]);
1264 res = set_sampler_wrap_t(ctx, sampObj, params[0]);
1267 res = set_sampler_wrap_r(ctx, sampObj, params[0]);
1270 res = set_sampler_min_filter(ctx, sampObj, params[0]);
1273 res = set_sampler_mag_filter(ctx, sampObj, params[0]);
1276 res = set_sampler_min_lod(ctx, sampObj, (GLfloat) params[0]);
1279 res = set_sampler_max_lod(ctx, sampObj, (GLfloat) params[0]);
1282 res = set_sampler_lod_bias(ctx, sampObj, (GLfloat) params[0]);
1285 res = set_sampler_compare_mode(ctx, sampObj, params[0]);
1288 res = set_sampler_compare_func(ctx, sampObj, params[0]);
1291 res = set_sampler_max_anisotropy(ctx, sampObj, (GLfloat) params[0]);
1294 res = set_sampler_cube_map_seamless(ctx, sampObj, params[0]);
1297 res = set_sampler_srgb_decode(ctx, sampObj, (GLenum) params[0]);
1300 res = set_sampler_reduction_mode(ctx, sampObj, (GLenum) params[0]);
1303 res = set_sampler_border_colori(ctx, sampObj, params);
1317 _mesa_error(ctx, GL_INVALID_ENUM, "glSamplerParameterIiv(pname=%s)\n",
1321 _mesa_error(ctx, GL_INVALID_ENUM, "glSamplerParameterIiv(param=%d)\n",
1325 _mesa_error(ctx, GL_INVALID_VALUE, "glSamplerParameterIiv(param=%d)\n",
1339 GET_CURRENT_CONTEXT(ctx);
1341 sampObj = sampler_parameter_error_check(ctx, sampler, false,
1348 res = set_sampler_wrap_s(ctx, sampObj, params[0]);
1351 res = set_sampler_wrap_t(ctx, sampObj, params[0]);
1354 res = set_sampler_wrap_r(ctx, sampObj, params[0]);
1357 res = set_sampler_min_filter(ctx, sampObj, params[0]);
1360 res = set_sampler_mag_filter(ctx, sampObj, params[0]);
1363 res = set_sampler_min_lod(ctx, sampObj, (GLfloat) params[0]);
1366 res = set_sampler_max_lod(ctx, sampObj, (GLfloat) params[0]);
1369 res = set_sampler_lod_bias(ctx, sampObj, (GLfloat) params[0]);
1372 res = set_sampler_compare_mode(ctx, sampObj, params[0]);
1375 res = set_sampler_compare_func(ctx, sampObj, params[0]);
1378 res = set_sampler_max_anisotropy(ctx, sampObj, (GLfloat) params[0]);
1381 res = set_sampler_cube_map_seamless(ctx, sampObj, params[0]);
1384 res = set_sampler_srgb_decode(ctx, sampObj, (GLenum) params[0]);
1387 res = set_sampler_reduction_mode(ctx, sampObj, (GLenum) params[0]);
1390 res = set_sampler_border_colorui(ctx, sampObj, params);
1404 _mesa_error(ctx, GL_INVALID_ENUM, "glSamplerParameterIuiv(pname=%s)\n",
1408 _mesa_error(ctx, GL_INVALID_ENUM, "glSamplerParameterIuiv(param=%u)\n",
1412 _mesa_error(ctx, GL_INVALID_VALUE, "glSamplerParameterIuiv(param=%u)\n",
1425 GET_CURRENT_CONTEXT(ctx);
1427 sampObj = sampler_parameter_error_check(ctx, sampler, true,
1467 if (!ctx->Extensions.ARB_shadow)
1472 if (!ctx->Extensions.ARB_shadow)
1477 if (!ctx->Extensions.EXT_texture_filter_anisotropic)
1491 if (!ctx->Extensions.AMD_seamless_cubemap_per_texture)
1496 if (!ctx->Extensions.EXT_texture_sRGB_decode)
1501 if (!ctx->Extensions.EXT_texture_filter_minmax &&
1502 !_mesa_has_ARB_texture_filter_minmax(ctx))
1512 _mesa_error(ctx, GL_INVALID_ENUM, "glGetSamplerParameteriv(pname=%s)",
1521 GET_CURRENT_CONTEXT(ctx);
1523 sampObj = sampler_parameter_error_check(ctx, sampler, true,
1569 if (!ctx->Extensions.AMD_seamless_cubemap_per_texture)
1574 if (!ctx->Extensions.EXT_texture_sRGB_decode)
1579 if (!ctx->Extensions.EXT_texture_filter_minmax &&
1580 !_mesa_has_ARB_texture_filter_minmax(ctx))
1590 _mesa_error(ctx, GL_INVALID_ENUM, "glGetSamplerParameterfv(pname=%s)",
1599 GET_CURRENT_CONTEXT(ctx);
1601 sampObj = sampler_parameter_error_check(ctx, sampler, true,
1647 if (!ctx->Extensions.AMD_seamless_cubemap_per_texture)
1652 if (!ctx->Extensions.EXT_texture_sRGB_decode)
1657 if (!ctx->Extensions.EXT_texture_filter_minmax &&
1658 !_mesa_has_ARB_texture_filter_minmax(ctx))
1668 _mesa_error(ctx, GL_INVALID_ENUM, "glGetSamplerParameterIiv(pname=%s)",
1677 GET_CURRENT_CONTEXT(ctx);
1679 sampObj = sampler_parameter_error_check(ctx, sampler, true,
1725 if (!ctx->Extensions.AMD_seamless_cubemap_per_texture)
1730 if (!ctx->Extensions.EXT_texture_sRGB_decode)
1735 if (!ctx->Extensions.EXT_texture_filter_minmax &&
1736 !_mesa_has_ARB_texture_filter_minmax(ctx))
1746 _mesa_error(ctx, GL_INVALID_ENUM, "glGetSamplerParameterIuiv(pname=%s)",