1f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org/* 2f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * Mesa 3-D graphics library 3f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * 4f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * Copyright (C) 2011 VMware, Inc. All Rights Reserved. 5f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * 6f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * Permission is hereby granted, free of charge, to any person obtaining a 7f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * copy of this software and associated documentation files (the "Software"), 8f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * to deal in the Software without restriction, including without limitation 9f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * the rights to use, copy, modify, merge, publish, distribute, sublicense, 10f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * and/or sell copies of the Software, and to permit persons to whom the 11f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * Software is furnished to do so, subject to the following conditions: 12f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * 13f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * The above copyright notice and this permission notice shall be included 14f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * in all copies or substantial portions of the Software. 15f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * 16f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 17f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 19f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN 20f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 21f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 22f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org */ 23f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 24f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 25f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org/** 26f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * \file samplerobj.c 27f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * \brief Functions for the GL_ARB_sampler_objects extension. 28f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * \author Brian Paul 29f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org */ 30f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 31f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 32f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "main/glheader.h" 33f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "main/context.h" 34f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "main/dispatch.h" 35f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "main/enums.h" 36f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "main/hash.h" 37f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "main/macros.h" 38f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "main/mfeatures.h" 39f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "main/mtypes.h" 40f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "main/samplerobj.h" 41f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 42f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 43f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstatic struct gl_sampler_object * 44f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org_mesa_lookup_samplerobj(struct gl_context *ctx, GLuint name) 45f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{ 46f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org if (name == 0) 47f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return NULL; 48f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org else 49f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return (struct gl_sampler_object *) 50f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _mesa_HashLookup(ctx->Shared->SamplerObjects, name); 51f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 52f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 53f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 54f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org/** 55f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * Handle reference counting. 56f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org */ 57f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgvoid 58f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org_mesa_reference_sampler_object_(struct gl_context *ctx, 59f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct gl_sampler_object **ptr, 60f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct gl_sampler_object *samp) 61f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{ 62f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org assert(*ptr != samp); /* The inline wrapper should prevent no-op calls */ 63f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 64f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org if (*ptr) { 65f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org /* Unreference the old sampler */ 66f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLboolean deleteFlag = GL_FALSE; 67f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct gl_sampler_object *oldSamp = *ptr; 68f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 69f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org /*_glthread_LOCK_MUTEX(oldSamp->Mutex);*/ 70f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org ASSERT(oldSamp->RefCount > 0); 71f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org oldSamp->RefCount--; 72f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#if 0 73f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org printf("SamplerObj %p %d DECR to %d\n", 74f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org (void *) oldSamp, oldSamp->Name, oldSamp->RefCount); 75f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#endif 76f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org deleteFlag = (oldSamp->RefCount == 0); 77f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org /*_glthread_UNLOCK_MUTEX(oldSamp->Mutex);*/ 78f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 79f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org if (deleteFlag) { 80f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org ASSERT(ctx->Driver.DeleteSamplerObject); 81f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org ctx->Driver.DeleteSamplerObject(ctx, oldSamp); 82f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 83f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 84f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org *ptr = NULL; 85f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 86f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org ASSERT(!*ptr); 87f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 88f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org if (samp) { 89f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org /* reference new sampler */ 90f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org /*_glthread_LOCK_MUTEX(samp->Mutex);*/ 91f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org if (samp->RefCount == 0) { 92f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org /* this sampler's being deleted (look just above) */ 93f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org /* Not sure this can every really happen. Warn if it does. */ 94f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _mesa_problem(NULL, "referencing deleted sampler object"); 95f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org *ptr = NULL; 96f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 97f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org else { 98f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org samp->RefCount++; 99f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#if 0 100f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org printf("SamplerObj %p %d INCR to %d\n", 101f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org (void *) samp, samp->Name, samp->RefCount); 102f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#endif 103f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org *ptr = samp; 104f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 105f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org /*_glthread_UNLOCK_MUTEX(samp->Mutex);*/ 106f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 107f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 108f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 109f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 110f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org/** 111f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * Initialize the fields of the given sampler object. 112f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org */ 113f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgvoid 114f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org_mesa_init_sampler_object(struct gl_sampler_object *sampObj, GLuint name) 115f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{ 116f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org sampObj->Name = name; 117f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org sampObj->RefCount = 1; 118f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org sampObj->WrapS = GL_REPEAT; 119f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org sampObj->WrapT = GL_REPEAT; 120f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org sampObj->WrapR = GL_REPEAT; 121f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org sampObj->MinFilter = GL_NEAREST_MIPMAP_LINEAR; 122f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org sampObj->MagFilter = GL_LINEAR; 123f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org sampObj->BorderColor.f[0] = 0.0; 124f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org sampObj->BorderColor.f[1] = 0.0; 125f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org sampObj->BorderColor.f[2] = 0.0; 126f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org sampObj->BorderColor.f[3] = 0.0; 127f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org sampObj->MinLod = -1000.0F; 128f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org sampObj->MaxLod = 1000.0F; 129f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org sampObj->LodBias = 0.0F; 130f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org sampObj->MaxAnisotropy = 1.0F; 131f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org sampObj->CompareMode = GL_NONE; 132f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org sampObj->CompareFunc = GL_LEQUAL; 133f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org sampObj->sRGBDecode = GL_DECODE_EXT; 134f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org sampObj->CubeMapSeamless = GL_FALSE; 135f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 136f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 137f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org/** 138f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * Fallback for ctx->Driver.NewSamplerObject(); 139f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org */ 140f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstruct gl_sampler_object * 141f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org_mesa_new_sampler_object(struct gl_context *ctx, GLuint name) 142f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{ 143f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct gl_sampler_object *sampObj = CALLOC_STRUCT(gl_sampler_object); 144f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org if (sampObj) { 145f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _mesa_init_sampler_object(sampObj, name); 146f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 147f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return sampObj; 148f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 149f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 150f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 151f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org/** 152f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * Fallback for ctx->Driver.DeleteSamplerObject(); 153f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org */ 154f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgvoid 155f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org_mesa_delete_sampler_object(struct gl_context *ctx, 156f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct gl_sampler_object *sampObj) 157f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{ 158f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org FREE(sampObj); 159f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 160f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 161f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 162f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgvoid GLAPIENTRY 163f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org_mesa_GenSamplers(GLsizei count, GLuint *samplers) 164f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{ 165f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GET_CURRENT_CONTEXT(ctx); 166f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint first; 167f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLint i; 168f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 169f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org ASSERT_OUTSIDE_BEGIN_END(ctx); 170f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 171f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org if (MESA_VERBOSE & VERBOSE_API) 172f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _mesa_debug(ctx, "glGenSamplers(%d)\n", count); 173f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 174f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org if (count < 0) { 175f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _mesa_error(ctx, GL_INVALID_VALUE, "glGenSamplers"); 176f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return; 177f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 178f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 179f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org if (!samplers) 180f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return; 181f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 182f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org first = _mesa_HashFindFreeKeyBlock(ctx->Shared->SamplerObjects, count); 183f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 184f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org /* Insert the ID and pointer to new sampler object into hash table */ 185f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org for (i = 0; i < count; i++) { 186f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct gl_sampler_object *sampObj = 187f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org ctx->Driver.NewSamplerObject(ctx, first + i); 188f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _mesa_HashInsert(ctx->Shared->SamplerObjects, first + i, sampObj); 189f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org samplers[i] = first + i; 190f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 191f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 192f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 193f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 194f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgvoid GLAPIENTRY 195f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org_mesa_DeleteSamplers(GLsizei count, const GLuint *samplers) 196f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{ 197f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GET_CURRENT_CONTEXT(ctx); 198f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLsizei i; 199f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 200f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org ASSERT_OUTSIDE_BEGIN_END(ctx); 201f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org FLUSH_VERTICES(ctx, 0); 202f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 203f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org if (count < 0) { 204f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _mesa_error(ctx, GL_INVALID_VALUE, "glDeleteSamplers(count)"); 205f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return; 206f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 207f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 208f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _glthread_LOCK_MUTEX(ctx->Shared->Mutex); 209f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 210f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org for (i = 0; i < count; i++) { 211f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org if (samplers[i]) { 212f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct gl_sampler_object *sampObj = 213f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _mesa_lookup_samplerobj(ctx, samplers[i]); 214f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org if (sampObj) { 215f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org /* The ID is immediately freed for re-use */ 216f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _mesa_HashRemove(ctx->Shared->SamplerObjects, samplers[i]); 217f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org /* But the object exists until its reference count goes to zero */ 218f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _mesa_reference_sampler_object(ctx, &sampObj, NULL); 219f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 220f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 221f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 222f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 223f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _glthread_UNLOCK_MUTEX(ctx->Shared->Mutex); 224f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 225f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 226f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 227f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstatic GLboolean GLAPIENTRY 228f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org_mesa_IsSampler(GLuint sampler) 229f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{ 230f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct gl_sampler_object *sampObj; 231f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GET_CURRENT_CONTEXT(ctx); 232f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 233f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org ASSERT_OUTSIDE_BEGIN_END_WITH_RETVAL(ctx, GL_FALSE); 234f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 235f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org if (sampler == 0) 236f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return GL_FALSE; 237f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 238f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org sampObj = _mesa_lookup_samplerobj(ctx, sampler); 239f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 240f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return sampObj != NULL; 241f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 242f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 243f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 244f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgvoid GLAPIENTRY 245f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org_mesa_BindSampler(GLuint unit, GLuint sampler) 246f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{ 247f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct gl_sampler_object *sampObj; 248f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GET_CURRENT_CONTEXT(ctx); 249f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 250f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org if (unit >= ctx->Const.MaxCombinedTextureImageUnits) { 251f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _mesa_error(ctx, GL_INVALID_VALUE, "glBindSampler(unit %u)", unit); 252f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return; 253f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 254f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 255f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org if (sampler == 0) { 256f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org /* Use the default sampler object, the one contained in the texture 257f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * object. 258f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org */ 259f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org sampObj = NULL; 260f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 261f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org else { 262f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org /* user-defined sampler object */ 263f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org sampObj = _mesa_lookup_samplerobj(ctx, sampler); 264f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org if (!sampObj) { 265f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _mesa_error(ctx, GL_INVALID_OPERATION, "glBindSampler(sampler)"); 266f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return; 267f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 268f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 269f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 270f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org if (ctx->Texture.Unit[unit].Sampler != sampObj) { 271f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org FLUSH_VERTICES(ctx, _NEW_TEXTURE); 272f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 273f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 274f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org /* bind new sampler */ 275f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _mesa_reference_sampler_object(ctx, &ctx->Texture.Unit[unit].Sampler, 276f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org sampObj); 277f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 278f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 279f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 280f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org/** 281f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * Check if a coordinate wrap mode is legal. 282f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * \return GL_TRUE if legal, GL_FALSE otherwise 283f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org */ 284f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstatic GLboolean 285f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgvalidate_texture_wrap_mode(struct gl_context *ctx, GLenum wrap) 286f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{ 287f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org const struct gl_extensions * const e = &ctx->Extensions; 288f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 289f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org switch (wrap) { 290f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_CLAMP: 291f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_CLAMP_TO_EDGE: 292f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_REPEAT: 293f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_MIRRORED_REPEAT: 294f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return GL_TRUE; 295f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_CLAMP_TO_BORDER: 296f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return e->ARB_texture_border_clamp; 297f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_MIRROR_CLAMP_EXT: 298f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return e->ATI_texture_mirror_once || e->EXT_texture_mirror_clamp; 299f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_MIRROR_CLAMP_TO_EDGE_EXT: 300f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return e->ATI_texture_mirror_once || e->EXT_texture_mirror_clamp; 301f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_MIRROR_CLAMP_TO_BORDER_EXT: 302f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return e->EXT_texture_mirror_clamp; 303f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org default: 304f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return GL_FALSE; 305f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 306f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 307f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 308f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 309f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org/** 310f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * This is called just prior to changing any sampler object state. 311f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org */ 312f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstatic inline void 313f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgflush(struct gl_context *ctx) 314f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{ 315f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org FLUSH_VERTICES(ctx, _NEW_TEXTURE); 316f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 317f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 318f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 319f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define INVALID_PARAM 0x100 320f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define INVALID_PNAME 0x101 321f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define INVALID_VALUE 0x102 322f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 323f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstatic GLuint 324f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgset_sampler_wrap_s(struct gl_context *ctx, struct gl_sampler_object *samp, 325f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLint param) 326f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{ 327f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org if (samp->WrapS == param) 328f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return GL_FALSE; 329f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org if (validate_texture_wrap_mode(ctx, param)) { 330f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org flush(ctx); 331f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org samp->WrapS = param; 332f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return GL_TRUE; 333f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 334f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return INVALID_PARAM; 335f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 336f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 337f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 338f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstatic GLuint 339f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgset_sampler_wrap_t(struct gl_context *ctx, struct gl_sampler_object *samp, 340f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLint param) 341f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{ 342f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org if (samp->WrapT == param) 343f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return GL_FALSE; 344f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org if (validate_texture_wrap_mode(ctx, param)) { 345f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org flush(ctx); 346f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org samp->WrapT = param; 347f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return GL_TRUE; 348f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 349f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return INVALID_PARAM; 350f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 351f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 352f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 353f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstatic GLuint 354f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgset_sampler_wrap_r(struct gl_context *ctx, struct gl_sampler_object *samp, 355f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLint param) 356f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{ 357f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org if (samp->WrapR == param) 358f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return GL_FALSE; 359f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org if (validate_texture_wrap_mode(ctx, param)) { 360f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org flush(ctx); 361f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org samp->WrapR = param; 362f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return GL_TRUE; 363f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 364f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return INVALID_PARAM; 365f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 366f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 367f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 368f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstatic GLuint 369f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgset_sampler_min_filter(struct gl_context *ctx, struct gl_sampler_object *samp, 370f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLint param) 371f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{ 372f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org if (samp->MinFilter == param) 373f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return GL_FALSE; 374f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 375f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org switch (param) { 376f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_NEAREST: 377f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_LINEAR: 378f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_NEAREST_MIPMAP_NEAREST: 379f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_LINEAR_MIPMAP_NEAREST: 380f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_NEAREST_MIPMAP_LINEAR: 381f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_LINEAR_MIPMAP_LINEAR: 382f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org flush(ctx); 383f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org samp->MinFilter = param; 384f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return GL_TRUE; 385f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org default: 386f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return INVALID_PARAM; 387f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 388f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 389f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 390f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 391f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstatic GLuint 392f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgset_sampler_mag_filter(struct gl_context *ctx, struct gl_sampler_object *samp, 393f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLint param) 394f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{ 395f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org if (samp->MagFilter == param) 396f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return GL_FALSE; 397f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 398f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org switch (param) { 399f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_NEAREST: 400f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_LINEAR: 401f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org flush(ctx); 402f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org samp->MagFilter = param; 403f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return GL_TRUE; 404f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org default: 405f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return INVALID_PARAM; 406f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 407f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 408f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 409f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 410f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstatic GLuint 411f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgset_sampler_lod_bias(struct gl_context *ctx, struct gl_sampler_object *samp, 412f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLfloat param) 413f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{ 414f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org if (samp->LodBias == param) 415f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return GL_FALSE; 416f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 417f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org flush(ctx); 418f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org samp->LodBias = param; 419f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return GL_TRUE; 420f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 421f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 422f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 423f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstatic GLuint 424f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgset_sampler_border_colorf(struct gl_context *ctx, 425f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct gl_sampler_object *samp, 426f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org const GLfloat params[4]) 427f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{ 428f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org flush(ctx); 429f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org samp->BorderColor.f[RCOMP] = params[0]; 430f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org samp->BorderColor.f[GCOMP] = params[1]; 431f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org samp->BorderColor.f[BCOMP] = params[2]; 432f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org samp->BorderColor.f[ACOMP] = params[3]; 433f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return GL_TRUE; 434f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 435f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 436f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 437f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstatic GLuint 438f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgset_sampler_border_colori(struct gl_context *ctx, 439f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct gl_sampler_object *samp, 440f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org const GLint params[4]) 441f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{ 442f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org flush(ctx); 443f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org samp->BorderColor.i[RCOMP] = params[0]; 444f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org samp->BorderColor.i[GCOMP] = params[1]; 445f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org samp->BorderColor.i[BCOMP] = params[2]; 446f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org samp->BorderColor.i[ACOMP] = params[3]; 447f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return GL_TRUE; 448f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 449f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 450f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 451f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstatic GLuint 452f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgset_sampler_border_colorui(struct gl_context *ctx, 453f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct gl_sampler_object *samp, 454f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org const GLuint params[4]) 455f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{ 456f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org flush(ctx); 457f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org samp->BorderColor.ui[RCOMP] = params[0]; 458f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org samp->BorderColor.ui[GCOMP] = params[1]; 459f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org samp->BorderColor.ui[BCOMP] = params[2]; 460f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org samp->BorderColor.ui[ACOMP] = params[3]; 461f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return GL_TRUE; 462f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 463f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 464f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 465f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstatic GLuint 466f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgset_sampler_min_lod(struct gl_context *ctx, struct gl_sampler_object *samp, 467f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLfloat param) 468f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{ 469f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org if (samp->MinLod == param) 470f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return GL_FALSE; 471f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 472f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org flush(ctx); 473f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org samp->MinLod = param; 474f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return GL_TRUE; 475f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 476f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 477f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 478f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstatic GLuint 479f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgset_sampler_max_lod(struct gl_context *ctx, struct gl_sampler_object *samp, 480f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLfloat param) 481f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{ 482f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org if (samp->MaxLod == param) 483f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return GL_FALSE; 484f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 485f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org flush(ctx); 486f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org samp->MaxLod = param; 487f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return GL_TRUE; 488f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 489f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 490f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 491f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstatic GLuint 492f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgset_sampler_compare_mode(struct gl_context *ctx, 493f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct gl_sampler_object *samp, GLint param) 494f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{ 495f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org if (!ctx->Extensions.ARB_shadow) 496f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return INVALID_PNAME; 497f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 498f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org if (samp->CompareMode == param) 499f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return GL_FALSE; 500f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 501f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org if (param == GL_NONE || 502f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org param == GL_COMPARE_R_TO_TEXTURE_ARB) { 503f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org flush(ctx); 504f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org samp->CompareMode = param; 505f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return GL_TRUE; 506f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 507f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 508f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return INVALID_PARAM; 509f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 510f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 511f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 512f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstatic GLuint 513f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgset_sampler_compare_func(struct gl_context *ctx, 514f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct gl_sampler_object *samp, GLint param) 515f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{ 516f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org if (!ctx->Extensions.ARB_shadow) 517f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return INVALID_PNAME; 518f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 519f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org if (samp->CompareFunc == param) 520f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return GL_FALSE; 521f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 522f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org switch (param) { 523f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_LEQUAL: 524f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_GEQUAL: 525f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org flush(ctx); 526f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org samp->CompareFunc = param; 527f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return GL_TRUE; 528f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_EQUAL: 529f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_NOTEQUAL: 530f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_LESS: 531f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_GREATER: 532f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_ALWAYS: 533f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_NEVER: 534f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org if (ctx->Extensions.EXT_shadow_funcs) { 535f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org flush(ctx); 536f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org samp->CompareFunc = param; 537f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return GL_TRUE; 538f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 539f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org /* fall-through */ 540f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org default: 541f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return INVALID_PARAM; 542f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 543f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 544f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 545f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 546f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstatic GLuint 547f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgset_sampler_max_anisotropy(struct gl_context *ctx, 548f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct gl_sampler_object *samp, GLfloat param) 549f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{ 550f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org if (!ctx->Extensions.EXT_texture_filter_anisotropic) 551f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return INVALID_PNAME; 552f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 553f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org if (samp->MaxAnisotropy == param) 554f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return GL_FALSE; 555f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 556f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org if (param < 1.0) 557f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return INVALID_VALUE; 558f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 559f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org flush(ctx); 560f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org /* clamp to max, that's what NVIDIA does */ 561f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org samp->MaxAnisotropy = MIN2(param, ctx->Const.MaxTextureMaxAnisotropy); 562f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return GL_TRUE; 563f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 564f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 565f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 566f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstatic GLuint 567f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgset_sampler_cube_map_seamless(struct gl_context *ctx, 568f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct gl_sampler_object *samp, GLboolean param) 569f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{ 570f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org if (!ctx->Extensions.AMD_seamless_cubemap_per_texture) 571f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return INVALID_PNAME; 572f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 573f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org if (samp->CubeMapSeamless == param) 574f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return GL_FALSE; 575f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 576f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org if (param != GL_TRUE && param != GL_FALSE) 577f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return INVALID_VALUE; 578f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 579f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org flush(ctx); 580f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org samp->CubeMapSeamless = param; 581f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return GL_TRUE; 582f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 583f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 584f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstatic GLuint 585f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgset_sampler_srgb_decode(struct gl_context *ctx, 586f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct gl_sampler_object *samp, GLenum param) 587f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{ 588f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org if (!ctx->Extensions.EXT_texture_sRGB_decode) 589f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return INVALID_PNAME; 590f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 591f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org if (samp->sRGBDecode == param) 592f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return GL_FALSE; 593f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 594f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org if (param != GL_DECODE_EXT && param != GL_SKIP_DECODE_EXT) 595f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return INVALID_VALUE; 596f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 597f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org flush(ctx); 598f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org samp->sRGBDecode = param; 599f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return GL_TRUE; 600f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 601f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 602f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgvoid GLAPIENTRY 603f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org_mesa_SamplerParameteri(GLuint sampler, GLenum pname, GLint param) 604f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{ 605f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct gl_sampler_object *sampObj; 606f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint res; 607f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GET_CURRENT_CONTEXT(ctx); 608f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 609f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org sampObj = _mesa_lookup_samplerobj(ctx, sampler); 610f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org if (!sampObj) { 611f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _mesa_error(ctx, GL_INVALID_VALUE, "glSamplerParameteri(sampler %u)", 612f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org sampler); 613f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return; 614f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 615f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 616f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org switch (pname) { 617f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TEXTURE_WRAP_S: 618f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org res = set_sampler_wrap_s(ctx, sampObj, param); 619f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 620f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TEXTURE_WRAP_T: 621f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org res = set_sampler_wrap_t(ctx, sampObj, param); 622f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 623f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TEXTURE_WRAP_R: 624f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org res = set_sampler_wrap_r(ctx, sampObj, param); 625f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 626f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TEXTURE_MIN_FILTER: 627f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org res = set_sampler_min_filter(ctx, sampObj, param); 628f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 629f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TEXTURE_MAG_FILTER: 630f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org res = set_sampler_mag_filter(ctx, sampObj, param); 631f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 632f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TEXTURE_MIN_LOD: 633f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org res = set_sampler_min_lod(ctx, sampObj, (GLfloat) param); 634f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 635f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TEXTURE_MAX_LOD: 636f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org res = set_sampler_max_lod(ctx, sampObj, (GLfloat) param); 637f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 638f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TEXTURE_LOD_BIAS: 639f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org res = set_sampler_lod_bias(ctx, sampObj, (GLfloat) param); 640f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 641f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TEXTURE_COMPARE_MODE: 642f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org res = set_sampler_compare_mode(ctx, sampObj, param); 643f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 644f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TEXTURE_COMPARE_FUNC: 645f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org res = set_sampler_compare_func(ctx, sampObj, param); 646f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 647f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TEXTURE_MAX_ANISOTROPY_EXT: 648f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org res = set_sampler_max_anisotropy(ctx, sampObj, (GLfloat) param); 649f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 650f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TEXTURE_CUBE_MAP_SEAMLESS: 651f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org res = set_sampler_cube_map_seamless(ctx, sampObj, param); 652f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 653f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TEXTURE_SRGB_DECODE_EXT: 654f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org res = set_sampler_srgb_decode(ctx, sampObj, param); 655f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 656f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TEXTURE_BORDER_COLOR: 657f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org /* fall-through */ 658f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org default: 659f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org res = INVALID_PNAME; 660f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 661f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 662f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org switch (res) { 663f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_FALSE: 664f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org /* no change */ 665f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 666f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TRUE: 667f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org /* state change - we do nothing special at this time */ 668f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 669f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case INVALID_PNAME: 670f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _mesa_error(ctx, GL_INVALID_ENUM, "glSamplerParameteri(pname=%s)\n", 671f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _mesa_lookup_enum_by_nr(pname)); 672f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 673f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case INVALID_PARAM: 674f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _mesa_error(ctx, GL_INVALID_ENUM, "glSamplerParameteri(param=%d)\n", 675f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org param); 676f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 677f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case INVALID_VALUE: 678f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _mesa_error(ctx, GL_INVALID_VALUE, "glSamplerParameteri(param=%d)\n", 679f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org param); 680f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 681f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org default: 682f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org ; 683f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 684f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 685f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 686f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 687f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstatic void GLAPIENTRY 688f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org_mesa_SamplerParameterf(GLuint sampler, GLenum pname, GLfloat param) 689f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{ 690f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct gl_sampler_object *sampObj; 691f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint res; 692f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GET_CURRENT_CONTEXT(ctx); 693f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 694f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org ASSERT_OUTSIDE_BEGIN_END(ctx); 695f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 696f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org sampObj = _mesa_lookup_samplerobj(ctx, sampler); 697f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org if (!sampObj) { 698f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _mesa_error(ctx, GL_INVALID_VALUE, "glSamplerParameterf(sampler %u)", 699f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org sampler); 700f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return; 701f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 702f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 703f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org switch (pname) { 704f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TEXTURE_WRAP_S: 705f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org res = set_sampler_wrap_s(ctx, sampObj, (GLint) param); 706f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 707f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TEXTURE_WRAP_T: 708f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org res = set_sampler_wrap_t(ctx, sampObj, (GLint) param); 709f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 710f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TEXTURE_WRAP_R: 711f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org res = set_sampler_wrap_r(ctx, sampObj, (GLint) param); 712f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 713f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TEXTURE_MIN_FILTER: 714f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org res = set_sampler_min_filter(ctx, sampObj, (GLint) param); 715f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 716f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TEXTURE_MAG_FILTER: 717f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org res = set_sampler_mag_filter(ctx, sampObj, (GLint) param); 718f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 719f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TEXTURE_MIN_LOD: 720f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org res = set_sampler_min_lod(ctx, sampObj, param); 721f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 722f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TEXTURE_MAX_LOD: 723f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org res = set_sampler_max_lod(ctx, sampObj, param); 724f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 725f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TEXTURE_LOD_BIAS: 726f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org res = set_sampler_lod_bias(ctx, sampObj, param); 727f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 728f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TEXTURE_COMPARE_MODE: 729f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org res = set_sampler_compare_mode(ctx, sampObj, (GLint) param); 730f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 731f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TEXTURE_COMPARE_FUNC: 732f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org res = set_sampler_compare_func(ctx, sampObj, (GLint) param); 733f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 734f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TEXTURE_MAX_ANISOTROPY_EXT: 735f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org res = set_sampler_max_anisotropy(ctx, sampObj, param); 736f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 737f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TEXTURE_CUBE_MAP_SEAMLESS: 738f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org res = set_sampler_cube_map_seamless(ctx, sampObj, (GLboolean) param); 739f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 740f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TEXTURE_SRGB_DECODE_EXT: 741f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org res = set_sampler_srgb_decode(ctx, sampObj, (GLenum) param); 742f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 743f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TEXTURE_BORDER_COLOR: 744f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org /* fall-through */ 745f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org default: 746f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org res = INVALID_PNAME; 747f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 748f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 749f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org switch (res) { 750f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_FALSE: 751f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org /* no change */ 752f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 753f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TRUE: 754f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org /* state change - we do nothing special at this time */ 755f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 756f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case INVALID_PNAME: 757f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _mesa_error(ctx, GL_INVALID_ENUM, "glSamplerParameterf(pname=%s)\n", 758f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _mesa_lookup_enum_by_nr(pname)); 759f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 760f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case INVALID_PARAM: 761f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _mesa_error(ctx, GL_INVALID_ENUM, "glSamplerParameterf(param=%f)\n", 762f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org param); 763f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 764f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case INVALID_VALUE: 765f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _mesa_error(ctx, GL_INVALID_VALUE, "glSamplerParameterf(param=%f)\n", 766f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org param); 767f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 768f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org default: 769f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org ; 770f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 771f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 772f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 773f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstatic void GLAPIENTRY 774f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org_mesa_SamplerParameteriv(GLuint sampler, GLenum pname, const GLint *params) 775f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{ 776f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct gl_sampler_object *sampObj; 777f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint res; 778f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GET_CURRENT_CONTEXT(ctx); 779f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 780f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org sampObj = _mesa_lookup_samplerobj(ctx, sampler); 781f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org if (!sampObj) { 782f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _mesa_error(ctx, GL_INVALID_VALUE, "glSamplerParameteriv(sampler %u)", 783f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org sampler); 784f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return; 785f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 786f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 787f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org switch (pname) { 788f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TEXTURE_WRAP_S: 789f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org res = set_sampler_wrap_s(ctx, sampObj, params[0]); 790f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 791f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TEXTURE_WRAP_T: 792f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org res = set_sampler_wrap_t(ctx, sampObj, params[0]); 793f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 794f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TEXTURE_WRAP_R: 795f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org res = set_sampler_wrap_r(ctx, sampObj, params[0]); 796f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 797f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TEXTURE_MIN_FILTER: 798f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org res = set_sampler_min_filter(ctx, sampObj, params[0]); 799f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 800f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TEXTURE_MAG_FILTER: 801f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org res = set_sampler_mag_filter(ctx, sampObj, params[0]); 802f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 803f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TEXTURE_MIN_LOD: 804f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org res = set_sampler_min_lod(ctx, sampObj, (GLfloat) params[0]); 805f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 806f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TEXTURE_MAX_LOD: 807f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org res = set_sampler_max_lod(ctx, sampObj, (GLfloat) params[0]); 808f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 809f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TEXTURE_LOD_BIAS: 810f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org res = set_sampler_lod_bias(ctx, sampObj, (GLfloat) params[0]); 811f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 812f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TEXTURE_COMPARE_MODE: 813f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org res = set_sampler_compare_mode(ctx, sampObj, params[0]); 814f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 815f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TEXTURE_COMPARE_FUNC: 816f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org res = set_sampler_compare_func(ctx, sampObj, params[0]); 817f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 818f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TEXTURE_MAX_ANISOTROPY_EXT: 819f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org res = set_sampler_max_anisotropy(ctx, sampObj, (GLfloat) params[0]); 820f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 821f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TEXTURE_CUBE_MAP_SEAMLESS: 822f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org res = set_sampler_cube_map_seamless(ctx, sampObj, params[0]); 823f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 824f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TEXTURE_SRGB_DECODE_EXT: 825f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org res = set_sampler_srgb_decode(ctx, sampObj, params[0]); 826f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 827f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TEXTURE_BORDER_COLOR: 828f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 829f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLfloat c[4]; 830f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org c[0] = INT_TO_FLOAT(params[0]); 831f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org c[1] = INT_TO_FLOAT(params[1]); 832f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org c[2] = INT_TO_FLOAT(params[2]); 833f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org c[3] = INT_TO_FLOAT(params[3]); 834f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org res = set_sampler_border_colorf(ctx, sampObj, c); 835f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 836f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 837f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org default: 838f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org res = INVALID_PNAME; 839f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 840f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 841f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org switch (res) { 842f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_FALSE: 843f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org /* no change */ 844f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 845f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TRUE: 846f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org /* state change - we do nothing special at this time */ 847f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 848f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case INVALID_PNAME: 849f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _mesa_error(ctx, GL_INVALID_ENUM, "glSamplerParameteriv(pname=%s)\n", 850f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _mesa_lookup_enum_by_nr(pname)); 851f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 852f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case INVALID_PARAM: 853f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _mesa_error(ctx, GL_INVALID_ENUM, "glSamplerParameteriv(param=%d)\n", 854f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org params[0]); 855f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 856f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case INVALID_VALUE: 857f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _mesa_error(ctx, GL_INVALID_VALUE, "glSamplerParameteriv(param=%d)\n", 858f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org params[0]); 859f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 860f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org default: 861f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org ; 862f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 863f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 864f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 865f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstatic void GLAPIENTRY 866f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org_mesa_SamplerParameterfv(GLuint sampler, GLenum pname, const GLfloat *params) 867f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{ 868f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct gl_sampler_object *sampObj; 869f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint res; 870f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GET_CURRENT_CONTEXT(ctx); 871f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 872f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org ASSERT_OUTSIDE_BEGIN_END(ctx); 873f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 874f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org sampObj = _mesa_lookup_samplerobj(ctx, sampler); 875f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org if (!sampObj) { 876f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _mesa_error(ctx, GL_INVALID_VALUE, "glSamplerParameterfv(sampler %u)", 877f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org sampler); 878f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return; 879f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 880f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 881f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org switch (pname) { 882f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TEXTURE_WRAP_S: 883f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org res = set_sampler_wrap_s(ctx, sampObj, (GLint) params[0]); 884f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 885f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TEXTURE_WRAP_T: 886f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org res = set_sampler_wrap_t(ctx, sampObj, (GLint) params[0]); 887f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 888f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TEXTURE_WRAP_R: 889f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org res = set_sampler_wrap_r(ctx, sampObj, (GLint) params[0]); 890f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 891f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TEXTURE_MIN_FILTER: 892f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org res = set_sampler_min_filter(ctx, sampObj, (GLint) params[0]); 893f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 894f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TEXTURE_MAG_FILTER: 895f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org res = set_sampler_mag_filter(ctx, sampObj, (GLint) params[0]); 896f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 897f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TEXTURE_MIN_LOD: 898f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org res = set_sampler_min_lod(ctx, sampObj, params[0]); 899f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 900f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TEXTURE_MAX_LOD: 901f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org res = set_sampler_max_lod(ctx, sampObj, params[0]); 902f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 903f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TEXTURE_LOD_BIAS: 904f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org res = set_sampler_lod_bias(ctx, sampObj, params[0]); 905f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 906f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TEXTURE_COMPARE_MODE: 907f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org res = set_sampler_compare_mode(ctx, sampObj, (GLint) params[0]); 908f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 909f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TEXTURE_COMPARE_FUNC: 910f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org res = set_sampler_compare_func(ctx, sampObj, (GLint) params[0]); 911f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 912f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TEXTURE_MAX_ANISOTROPY_EXT: 913f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org res = set_sampler_max_anisotropy(ctx, sampObj, params[0]); 914f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 915f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TEXTURE_CUBE_MAP_SEAMLESS: 916f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org res = set_sampler_cube_map_seamless(ctx, sampObj, (GLboolean) params[0]); 917f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 918f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TEXTURE_SRGB_DECODE_EXT: 919f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org res = set_sampler_srgb_decode(ctx, sampObj, (GLenum) params[0]); 920f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 921f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TEXTURE_BORDER_COLOR: 922f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org res = set_sampler_border_colorf(ctx, sampObj, params); 923f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 924f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org default: 925f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org res = INVALID_PNAME; 926f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 927f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 928f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org switch (res) { 929f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_FALSE: 930f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org /* no change */ 931f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 932f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TRUE: 933f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org /* state change - we do nothing special at this time */ 934f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 935f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case INVALID_PNAME: 936f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _mesa_error(ctx, GL_INVALID_ENUM, "glSamplerParameterfv(pname=%s)\n", 937f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _mesa_lookup_enum_by_nr(pname)); 938f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 939f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case INVALID_PARAM: 940f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _mesa_error(ctx, GL_INVALID_ENUM, "glSamplerParameterfv(param=%f)\n", 941f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org params[0]); 942f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 943f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case INVALID_VALUE: 944f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _mesa_error(ctx, GL_INVALID_VALUE, "glSamplerParameterfv(param=%f)\n", 945f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org params[0]); 946f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 947f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org default: 948f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org ; 949f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 950f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 951f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 952f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstatic void GLAPIENTRY 953f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org_mesa_SamplerParameterIiv(GLuint sampler, GLenum pname, const GLint *params) 954f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{ 955f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct gl_sampler_object *sampObj; 956f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint res; 957f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GET_CURRENT_CONTEXT(ctx); 958f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 959f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org sampObj = _mesa_lookup_samplerobj(ctx, sampler); 960f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org if (!sampObj) { 961f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _mesa_error(ctx, GL_INVALID_VALUE, "glSamplerParameterIiv(sampler %u)", 962f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org sampler); 963f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return; 964f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 965f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 966f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org switch (pname) { 967f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TEXTURE_WRAP_S: 968f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org res = set_sampler_wrap_s(ctx, sampObj, params[0]); 969f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 970f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TEXTURE_WRAP_T: 971f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org res = set_sampler_wrap_t(ctx, sampObj, params[0]); 972f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 973f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TEXTURE_WRAP_R: 974f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org res = set_sampler_wrap_r(ctx, sampObj, params[0]); 975f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 976f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TEXTURE_MIN_FILTER: 977f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org res = set_sampler_min_filter(ctx, sampObj, params[0]); 978f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 979f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TEXTURE_MAG_FILTER: 980f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org res = set_sampler_mag_filter(ctx, sampObj, params[0]); 981f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 982f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TEXTURE_MIN_LOD: 983f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org res = set_sampler_min_lod(ctx, sampObj, (GLfloat) params[0]); 984f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 985f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TEXTURE_MAX_LOD: 986f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org res = set_sampler_max_lod(ctx, sampObj, (GLfloat) params[0]); 987f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 988f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TEXTURE_LOD_BIAS: 989f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org res = set_sampler_lod_bias(ctx, sampObj, (GLfloat) params[0]); 990f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 991f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TEXTURE_COMPARE_MODE: 992f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org res = set_sampler_compare_mode(ctx, sampObj, params[0]); 993f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 994f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TEXTURE_COMPARE_FUNC: 995f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org res = set_sampler_compare_func(ctx, sampObj, params[0]); 996f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 997f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TEXTURE_MAX_ANISOTROPY_EXT: 998f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org res = set_sampler_max_anisotropy(ctx, sampObj, (GLfloat) params[0]); 999f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 1000f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TEXTURE_CUBE_MAP_SEAMLESS: 1001f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org res = set_sampler_cube_map_seamless(ctx, sampObj, params[0]); 1002f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 1003f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TEXTURE_SRGB_DECODE_EXT: 1004f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org res = set_sampler_srgb_decode(ctx, sampObj, (GLenum) params[0]); 1005f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 1006f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TEXTURE_BORDER_COLOR: 1007f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org res = set_sampler_border_colori(ctx, sampObj, params); 1008f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 1009f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org default: 1010f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org res = INVALID_PNAME; 1011f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 1012f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1013f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org switch (res) { 1014f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_FALSE: 1015f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org /* no change */ 1016f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 1017f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TRUE: 1018f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org /* state change - we do nothing special at this time */ 1019f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 1020f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case INVALID_PNAME: 1021f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _mesa_error(ctx, GL_INVALID_ENUM, "glSamplerParameterIiv(pname=%s)\n", 1022f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _mesa_lookup_enum_by_nr(pname)); 1023f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 1024f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case INVALID_PARAM: 1025f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _mesa_error(ctx, GL_INVALID_ENUM, "glSamplerParameterIiv(param=%d)\n", 1026f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org params[0]); 1027f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 1028f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case INVALID_VALUE: 1029f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _mesa_error(ctx, GL_INVALID_VALUE, "glSamplerParameterIiv(param=%d)\n", 1030f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org params[0]); 1031f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 1032f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org default: 1033f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org ; 1034f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 1035f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 1036f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1037f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1038f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstatic void GLAPIENTRY 1039f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org_mesa_SamplerParameterIuiv(GLuint sampler, GLenum pname, const GLuint *params) 1040f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{ 1041f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct gl_sampler_object *sampObj; 1042f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint res; 1043f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GET_CURRENT_CONTEXT(ctx); 1044f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1045f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org sampObj = _mesa_lookup_samplerobj(ctx, sampler); 1046f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org if (!sampObj) { 1047f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _mesa_error(ctx, GL_INVALID_VALUE, "glSamplerParameterIuiv(sampler %u)", 1048f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org sampler); 1049f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return; 1050f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 1051f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1052f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org switch (pname) { 1053f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TEXTURE_WRAP_S: 1054f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org res = set_sampler_wrap_s(ctx, sampObj, params[0]); 1055f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 1056f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TEXTURE_WRAP_T: 1057f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org res = set_sampler_wrap_t(ctx, sampObj, params[0]); 1058f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 1059f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TEXTURE_WRAP_R: 1060f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org res = set_sampler_wrap_r(ctx, sampObj, params[0]); 1061f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 1062f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TEXTURE_MIN_FILTER: 1063f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org res = set_sampler_min_filter(ctx, sampObj, params[0]); 1064f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 1065f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TEXTURE_MAG_FILTER: 1066f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org res = set_sampler_mag_filter(ctx, sampObj, params[0]); 1067f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 1068f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TEXTURE_MIN_LOD: 1069f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org res = set_sampler_min_lod(ctx, sampObj, (GLfloat) params[0]); 1070f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 1071f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TEXTURE_MAX_LOD: 1072f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org res = set_sampler_max_lod(ctx, sampObj, (GLfloat) params[0]); 1073f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 1074f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TEXTURE_LOD_BIAS: 1075f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org res = set_sampler_lod_bias(ctx, sampObj, (GLfloat) params[0]); 1076f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 1077f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TEXTURE_COMPARE_MODE: 1078f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org res = set_sampler_compare_mode(ctx, sampObj, params[0]); 1079f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 1080f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TEXTURE_COMPARE_FUNC: 1081f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org res = set_sampler_compare_func(ctx, sampObj, params[0]); 1082f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 1083f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TEXTURE_MAX_ANISOTROPY_EXT: 1084f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org res = set_sampler_max_anisotropy(ctx, sampObj, (GLfloat) params[0]); 1085f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 1086f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TEXTURE_CUBE_MAP_SEAMLESS: 1087f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org res = set_sampler_cube_map_seamless(ctx, sampObj, params[0]); 1088f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 1089f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TEXTURE_SRGB_DECODE_EXT: 1090f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org res = set_sampler_srgb_decode(ctx, sampObj, (GLenum) params[0]); 1091f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 1092f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TEXTURE_BORDER_COLOR: 1093f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org res = set_sampler_border_colorui(ctx, sampObj, params); 1094f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 1095f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org default: 1096f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org res = INVALID_PNAME; 1097f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 1098f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1099f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org switch (res) { 1100f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_FALSE: 1101f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org /* no change */ 1102f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 1103f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TRUE: 1104f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org /* state change - we do nothing special at this time */ 1105f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 1106f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case INVALID_PNAME: 1107f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _mesa_error(ctx, GL_INVALID_ENUM, "glSamplerParameterIuiv(pname=%s)\n", 1108f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _mesa_lookup_enum_by_nr(pname)); 1109f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 1110f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case INVALID_PARAM: 1111f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _mesa_error(ctx, GL_INVALID_ENUM, "glSamplerParameterIuiv(param=%u)\n", 1112f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org params[0]); 1113f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 1114f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case INVALID_VALUE: 1115f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _mesa_error(ctx, GL_INVALID_VALUE, "glSamplerParameterIuiv(param=%u)\n", 1116f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org params[0]); 1117f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 1118f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org default: 1119f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org ; 1120f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 1121f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 1122f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1123f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1124f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstatic void GLAPIENTRY 1125f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org_mesa_GetSamplerParameteriv(GLuint sampler, GLenum pname, GLint *params) 1126f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{ 1127f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct gl_sampler_object *sampObj; 1128f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GET_CURRENT_CONTEXT(ctx); 1129f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1130f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org sampObj = _mesa_lookup_samplerobj(ctx, sampler); 1131f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org if (!sampObj) { 1132f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _mesa_error(ctx, GL_INVALID_VALUE, "glGetSamplerParameteriv(sampler %u)", 1133f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org sampler); 1134f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return; 1135f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 1136f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1137f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org switch (pname) { 1138f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TEXTURE_WRAP_S: 1139f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org *params = sampObj->WrapS; 1140f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 1141f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TEXTURE_WRAP_T: 1142f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org *params = sampObj->WrapT; 1143f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 1144f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TEXTURE_WRAP_R: 1145f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org *params = sampObj->WrapR; 1146f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 1147f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TEXTURE_MIN_FILTER: 1148f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org *params = sampObj->MinFilter; 1149f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 1150f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TEXTURE_MAG_FILTER: 1151f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org *params = sampObj->MagFilter; 1152f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 1153f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TEXTURE_MIN_LOD: 1154f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org *params = (GLint) sampObj->MinLod; 1155f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 1156f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TEXTURE_MAX_LOD: 1157f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org *params = (GLint) sampObj->MaxLod; 1158f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 1159f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TEXTURE_LOD_BIAS: 1160f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org *params = (GLint) sampObj->LodBias; 1161f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 1162f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TEXTURE_COMPARE_MODE: 1163f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org if (!ctx->Extensions.ARB_shadow) 1164f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org goto invalid_pname; 1165f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org *params = sampObj->CompareMode; 1166f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 1167f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TEXTURE_COMPARE_FUNC: 1168f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org if (!ctx->Extensions.ARB_shadow) 1169f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org goto invalid_pname; 1170f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org *params = sampObj->CompareFunc; 1171f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 1172f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TEXTURE_MAX_ANISOTROPY_EXT: 1173f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org *params = (GLint) sampObj->MaxAnisotropy; 1174f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 1175f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TEXTURE_BORDER_COLOR: 1176f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org params[0] = FLOAT_TO_INT(sampObj->BorderColor.f[0]); 1177f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org params[1] = FLOAT_TO_INT(sampObj->BorderColor.f[1]); 1178f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org params[2] = FLOAT_TO_INT(sampObj->BorderColor.f[2]); 1179f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org params[3] = FLOAT_TO_INT(sampObj->BorderColor.f[3]); 1180f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 1181f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TEXTURE_CUBE_MAP_SEAMLESS: 1182f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org if (!ctx->Extensions.AMD_seamless_cubemap_per_texture) 1183f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org goto invalid_pname; 1184f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org *params = sampObj->CubeMapSeamless; 1185f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 1186f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TEXTURE_SRGB_DECODE_EXT: 1187f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org if (!ctx->Extensions.EXT_texture_sRGB_decode) 1188f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org goto invalid_pname; 1189f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org *params = (GLenum) sampObj->sRGBDecode; 1190f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 1191f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org default: 1192f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org goto invalid_pname; 1193f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 1194f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return; 1195f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1196f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orginvalid_pname: 1197f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _mesa_error(ctx, GL_INVALID_ENUM, "glGetSamplerParameteriv(pname=%s)", 1198f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _mesa_lookup_enum_by_nr(pname)); 1199f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 1200f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1201f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1202f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstatic void GLAPIENTRY 1203f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org_mesa_GetSamplerParameterfv(GLuint sampler, GLenum pname, GLfloat *params) 1204f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{ 1205f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct gl_sampler_object *sampObj; 1206f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GET_CURRENT_CONTEXT(ctx); 1207f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1208f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org sampObj = _mesa_lookup_samplerobj(ctx, sampler); 1209f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org if (!sampObj) { 1210f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _mesa_error(ctx, GL_INVALID_VALUE, "glGetSamplerParameterfv(sampler %u)", 1211f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org sampler); 1212f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return; 1213f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 1214f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1215f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org switch (pname) { 1216f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TEXTURE_WRAP_S: 1217f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org *params = (GLfloat) sampObj->WrapS; 1218f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 1219f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TEXTURE_WRAP_T: 1220f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org *params = (GLfloat) sampObj->WrapT; 1221f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 1222f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TEXTURE_WRAP_R: 1223f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org *params = (GLfloat) sampObj->WrapR; 1224f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 1225f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TEXTURE_MIN_FILTER: 1226f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org *params = (GLfloat) sampObj->MinFilter; 1227f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 1228f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TEXTURE_MAG_FILTER: 1229f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org *params = (GLfloat) sampObj->MagFilter; 1230f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 1231f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TEXTURE_MIN_LOD: 1232f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org *params = sampObj->MinLod; 1233f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 1234f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TEXTURE_MAX_LOD: 1235f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org *params = sampObj->MaxLod; 1236f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 1237f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TEXTURE_LOD_BIAS: 1238f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org *params = sampObj->LodBias; 1239f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 1240f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TEXTURE_COMPARE_MODE: 1241f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org if (!ctx->Extensions.ARB_shadow) 1242f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org goto invalid_pname; 1243f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org *params = (GLfloat) sampObj->CompareMode; 1244f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 1245f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TEXTURE_COMPARE_FUNC: 1246f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org if (!ctx->Extensions.ARB_shadow) 1247f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org goto invalid_pname; 1248f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org *params = (GLfloat) sampObj->CompareFunc; 1249f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 1250f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TEXTURE_MAX_ANISOTROPY_EXT: 1251f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org *params = sampObj->MaxAnisotropy; 1252f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 1253f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TEXTURE_BORDER_COLOR: 1254f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org params[0] = sampObj->BorderColor.f[0]; 1255f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org params[1] = sampObj->BorderColor.f[1]; 1256f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org params[2] = sampObj->BorderColor.f[2]; 1257f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org params[3] = sampObj->BorderColor.f[3]; 1258f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 1259f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TEXTURE_CUBE_MAP_SEAMLESS: 1260f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org if (!ctx->Extensions.AMD_seamless_cubemap_per_texture) 1261f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org goto invalid_pname; 1262f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org *params = (GLfloat) sampObj->CubeMapSeamless; 1263f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 1264f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TEXTURE_SRGB_DECODE_EXT: 1265f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org if (!ctx->Extensions.EXT_texture_sRGB_decode) 1266f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org goto invalid_pname; 1267f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org *params = (GLfloat) sampObj->sRGBDecode; 1268f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 1269f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org default: 1270f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org goto invalid_pname; 1271f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 1272f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return; 1273f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1274f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orginvalid_pname: 1275f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _mesa_error(ctx, GL_INVALID_ENUM, "glGetSamplerParameterfv(pname=%s)", 1276f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _mesa_lookup_enum_by_nr(pname)); 1277f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 1278f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1279f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1280f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstatic void GLAPIENTRY 1281f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org_mesa_GetSamplerParameterIiv(GLuint sampler, GLenum pname, GLint *params) 1282f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{ 1283f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct gl_sampler_object *sampObj; 1284f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GET_CURRENT_CONTEXT(ctx); 1285f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1286f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org sampObj = _mesa_lookup_samplerobj(ctx, sampler); 1287f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org if (!sampObj) { 1288f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _mesa_error(ctx, GL_INVALID_VALUE, 1289f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org "glGetSamplerParameterIiv(sampler %u)", 1290f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org sampler); 1291f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return; 1292f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 1293f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1294f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org switch (pname) { 1295f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TEXTURE_WRAP_S: 1296f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org *params = sampObj->WrapS; 1297f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 1298f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TEXTURE_WRAP_T: 1299f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org *params = sampObj->WrapT; 1300f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 1301f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TEXTURE_WRAP_R: 1302f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org *params = sampObj->WrapR; 1303f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 1304f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TEXTURE_MIN_FILTER: 1305f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org *params = sampObj->MinFilter; 1306f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 1307f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TEXTURE_MAG_FILTER: 1308f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org *params = sampObj->MagFilter; 1309f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 1310f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TEXTURE_MIN_LOD: 1311f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org *params = (GLint) sampObj->MinLod; 1312f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 1313f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TEXTURE_MAX_LOD: 1314f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org *params = (GLint) sampObj->MaxLod; 1315f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 1316f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TEXTURE_LOD_BIAS: 1317f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org *params = (GLint) sampObj->LodBias; 1318f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 1319f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TEXTURE_COMPARE_MODE: 1320f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org if (!ctx->Extensions.ARB_shadow) 1321f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org goto invalid_pname; 1322f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org *params = sampObj->CompareMode; 1323f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 1324f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TEXTURE_COMPARE_FUNC: 1325f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org if (!ctx->Extensions.ARB_shadow) 1326f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org goto invalid_pname; 1327f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org *params = sampObj->CompareFunc; 1328f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 1329f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TEXTURE_MAX_ANISOTROPY_EXT: 1330f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org *params = (GLint) sampObj->MaxAnisotropy; 1331f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 1332f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TEXTURE_BORDER_COLOR: 1333f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org params[0] = sampObj->BorderColor.i[0]; 1334f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org params[1] = sampObj->BorderColor.i[1]; 1335f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org params[2] = sampObj->BorderColor.i[2]; 1336f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org params[3] = sampObj->BorderColor.i[3]; 1337f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 1338f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TEXTURE_CUBE_MAP_SEAMLESS: 1339f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org if (!ctx->Extensions.AMD_seamless_cubemap_per_texture) 1340f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org goto invalid_pname; 1341f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org *params = sampObj->CubeMapSeamless; 1342f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 1343f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TEXTURE_SRGB_DECODE_EXT: 1344f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org if (!ctx->Extensions.EXT_texture_sRGB_decode) 1345f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org goto invalid_pname; 1346f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org *params = (GLenum) sampObj->sRGBDecode; 1347f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 1348f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org default: 1349f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org goto invalid_pname; 1350f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 1351f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return; 1352f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1353f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orginvalid_pname: 1354f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _mesa_error(ctx, GL_INVALID_ENUM, "glGetSamplerParameterIiv(pname=%s)", 1355f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _mesa_lookup_enum_by_nr(pname)); 1356f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 1357f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1358f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1359f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstatic void GLAPIENTRY 1360f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org_mesa_GetSamplerParameterIuiv(GLuint sampler, GLenum pname, GLuint *params) 1361f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{ 1362f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct gl_sampler_object *sampObj; 1363f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GET_CURRENT_CONTEXT(ctx); 1364f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1365f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org sampObj = _mesa_lookup_samplerobj(ctx, sampler); 1366f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org if (!sampObj) { 1367f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _mesa_error(ctx, GL_INVALID_VALUE, 1368f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org "glGetSamplerParameterIuiv(sampler %u)", 1369f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org sampler); 1370f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return; 1371f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 1372f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1373f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org switch (pname) { 1374f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TEXTURE_WRAP_S: 1375f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org *params = sampObj->WrapS; 1376f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 1377f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TEXTURE_WRAP_T: 1378f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org *params = sampObj->WrapT; 1379f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 1380f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TEXTURE_WRAP_R: 1381f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org *params = sampObj->WrapR; 1382f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 1383f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TEXTURE_MIN_FILTER: 1384f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org *params = sampObj->MinFilter; 1385f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 1386f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TEXTURE_MAG_FILTER: 1387f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org *params = sampObj->MagFilter; 1388f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 1389f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TEXTURE_MIN_LOD: 1390f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org *params = (GLuint) sampObj->MinLod; 1391f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 1392f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TEXTURE_MAX_LOD: 1393f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org *params = (GLuint) sampObj->MaxLod; 1394f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 1395f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TEXTURE_LOD_BIAS: 1396f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org *params = (GLuint) sampObj->LodBias; 1397f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 1398f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TEXTURE_COMPARE_MODE: 1399f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org if (!ctx->Extensions.ARB_shadow) 1400f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org goto invalid_pname; 1401f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org *params = sampObj->CompareMode; 1402f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 1403f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TEXTURE_COMPARE_FUNC: 1404f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org if (!ctx->Extensions.ARB_shadow) 1405f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org goto invalid_pname; 1406f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org *params = sampObj->CompareFunc; 1407f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 1408f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TEXTURE_MAX_ANISOTROPY_EXT: 1409f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org *params = (GLuint) sampObj->MaxAnisotropy; 1410f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 1411f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TEXTURE_BORDER_COLOR: 1412f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org params[0] = sampObj->BorderColor.ui[0]; 1413f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org params[1] = sampObj->BorderColor.ui[1]; 1414f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org params[2] = sampObj->BorderColor.ui[2]; 1415f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org params[3] = sampObj->BorderColor.ui[3]; 1416f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 1417f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TEXTURE_CUBE_MAP_SEAMLESS: 1418f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org if (!ctx->Extensions.AMD_seamless_cubemap_per_texture) 1419f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org goto invalid_pname; 1420f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org *params = sampObj->CubeMapSeamless; 1421f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 1422f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TEXTURE_SRGB_DECODE_EXT: 1423f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org if (!ctx->Extensions.EXT_texture_sRGB_decode) 1424f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org goto invalid_pname; 1425f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org *params = (GLenum) sampObj->sRGBDecode; 1426f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 1427f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org default: 1428f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org goto invalid_pname; 1429f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 1430f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return; 1431f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1432f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orginvalid_pname: 1433f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _mesa_error(ctx, GL_INVALID_ENUM, "glGetSamplerParameterIuiv(pname=%s)", 1434f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _mesa_lookup_enum_by_nr(pname)); 1435f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 1436f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1437f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1438f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgvoid 1439f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org_mesa_init_sampler_object_functions(struct dd_function_table *driver) 1440f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{ 1441f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org driver->NewSamplerObject = _mesa_new_sampler_object; 1442f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org driver->DeleteSamplerObject = _mesa_delete_sampler_object; 1443f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 1444f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1445f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1446f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgvoid 1447f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org_mesa_init_sampler_object_dispatch(struct _glapi_table *disp) 1448f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{ 1449f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org SET_GenSamplers(disp, _mesa_GenSamplers); 1450f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org SET_DeleteSamplers(disp, _mesa_DeleteSamplers); 1451f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org SET_IsSampler(disp, _mesa_IsSampler); 1452f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org SET_BindSampler(disp, _mesa_BindSampler); 1453f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org SET_SamplerParameteri(disp, _mesa_SamplerParameteri); 1454f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org SET_SamplerParameterf(disp, _mesa_SamplerParameterf); 1455f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org SET_SamplerParameteriv(disp, _mesa_SamplerParameteriv); 1456f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org SET_SamplerParameterfv(disp, _mesa_SamplerParameterfv); 1457f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org SET_SamplerParameterIiv(disp, _mesa_SamplerParameterIiv); 1458f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org SET_SamplerParameterIuiv(disp, _mesa_SamplerParameterIuiv); 1459f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org SET_GetSamplerParameteriv(disp, _mesa_GetSamplerParameteriv); 1460f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org SET_GetSamplerParameterfv(disp, _mesa_GetSamplerParameterfv); 1461f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org SET_GetSamplerParameterIiv(disp, _mesa_GetSamplerParameterIiv); 1462f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org SET_GetSamplerParameterIuiv(disp, _mesa_GetSamplerParameterIuiv); 1463f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 1464