Lines Matching refs:shader
137 extern "C" void compile_shader(const struct gl_context *ctx, struct gl_shader *shader);
151 gl_shader * shader = _mesa_new_shader(NULL, 0, type); in ShaderCreate() local
152 if (!shader) in ShaderCreate()
154 assert(1 == shader->RefCount); in ShaderCreate()
155 return shader; in ShaderCreate()
158 void GGLShaderSource(gl_shader_t * shader, GLsizei count, const char ** string, const int * length) in GGLShaderSource() argument
160 hieralloc_free(const_cast<GLchar *>(shader->Source)); in GGLShaderSource()
165 … shader->Source = hieralloc_strndup_append(const_cast<GLchar *>(shader->Source), string[i], len); in GGLShaderSource()
170 GLboolean GGLShaderCompile(gl_shader * shader, const char * glsl, const char ** infoLog) in GGLShaderCompile() argument
173 shader->Source = glsl; in GGLShaderCompile()
174 assert(shader->Source); in GGLShaderCompile()
175 compile_shader(glContext.ctx, shader); in GGLShaderCompile()
177 shader->Source = NULL; in GGLShaderCompile()
179 *infoLog = shader->InfoLog; in GGLShaderCompile()
180 return shader->CompileStatus; in GGLShaderCompile()
183 static GLboolean ShaderCompile(const GGLInterface * iface, gl_shader * shader, in ShaderCompile() argument
187 if (!glsl && !shader->Source) { in ShaderCompile()
192 return GGLShaderCompile(shader, glsl, infoLog); in ShaderCompile()
195 void GGLShaderDelete(gl_shader * shader) in GGLShaderDelete() argument
197 if (shader && shader->executable) { in GGLShaderDelete()
198 for (std::map<ShaderKey, Instance *>::iterator it=shader->executable->instances.begin(); in GGLShaderDelete()
199 it != shader->executable->instances.end(); it++) in GGLShaderDelete()
201 shader->executable->instances.~map(); in GGLShaderDelete()
203 _mesa_delete_shader(NULL, shader); in GGLShaderDelete()
206 static void ShaderDelete(const GGLInterface * iface, gl_shader * shader) in ShaderDelete() argument
208 GGLShaderDelete(shader); in ShaderDelete()
238 unsigned GGLShaderAttach(gl_shader_program * program, gl_shader * shader) in GGLShaderAttach() argument
241 if (program->Shaders[i]->Type == shader->Type || program->Shaders[i] == shader) in GGLShaderAttach()
250 program->Shaders[program->NumShaders] = shader; in GGLShaderAttach()
252 shader->RefCount++; in GGLShaderAttach()
257 gl_shader * shader) in ShaderAttach() argument
259 unsigned error = GGLShaderAttach(program, shader); in ShaderAttach()
292 static void GetShaderKey(const GGLState * ctx, const gl_shader * shader, ShaderKey * key) in GetShaderKey() argument
295 if (GL_FRAGMENT_SHADER == shader->Type) { in GetShaderKey()
303 if (shader->SamplersUsed & (1 << i)) { in GetShaderKey()
369 const gl_shader * shader; member
393 static void CodeGen(Instance * instance, const char * mainName, gl_shader * shader, in CodeGen() argument
418 SymbolLookupContext ctx = {gglCtx, program, shader}; in CodeGen()
450 gl_shader * shader = program->_LinkedShaders[i]; in GGLShaderUse() local
451 shader->function = NULL; in GGLShaderUse()
452 if (!shader->executable) { in GGLShaderUse()
453 shader->executable = hieralloc_zero(shader, Executable); in GGLShaderUse()
454 shader->executable->instances = std::map<ShaderKey, Instance *>(); in GGLShaderUse()
458 GetShaderKey(gglState, shader, &shaderKey); in GGLShaderUse()
459 Instance * instance = shader->executable->instances[shaderKey]; in GGLShaderUse()
463 instance = hieralloc_zero(shader->executable, Instance); in GGLShaderUse()
468 … GetShaderKeyString(shader->Type, &shaderKey, shaderName, sizeof shaderName / sizeof *shaderName); in GGLShaderUse()
473 do_mat_op_to_vec(shader->ir); // TODO: move these passes to link? in GGLShaderUse()
494 if (!glsl_ir_to_llvm_module(shader->ir, module, gglState, shaderName)) { in GGLShaderUse()
552 if (GL_FRAGMENT_SHADER == shader->Type) { in GGLShaderUse()
556 CodeGen(instance, scanlineName, shader, program, gglState); in GGLShaderUse()
559 CodeGen(instance, mainName, shader, program, gglState); in GGLShaderUse()
561 shader->executable->instances[shaderKey] = instance; in GGLShaderUse()
567 shader->function = instance->function; in GGLShaderUse()
600 unsigned GGLShaderDetach(gl_shader_program * program, gl_shader * shader) in GGLShaderDetach() argument
603 if (program->Shaders[i] == shader) { in GGLShaderDetach()
607 shader->RefCount--; in GGLShaderDetach()
608 if (1 == shader->RefCount && shader->DeletePending) in GGLShaderDetach()
609 GGLShaderDelete(shader); in GGLShaderDetach()
616 gl_shader * shader) in ShaderDetach() argument
618 unsigned error = GGLShaderDetach(program, shader); in ShaderDetach()
647 void GGLShaderGetiv(const gl_shader_t * shader, const GLenum pname, GLint * params) in GGLShaderGetiv() argument
651 *params = shader->Type; in GGLShaderGetiv()
654 *params = shader->DeletePending; in GGLShaderGetiv()
657 *params = shader->CompileStatus; in GGLShaderGetiv()
660 *params = shader->InfoLog ? strlen(shader->InfoLog) + 1 : 0; in GGLShaderGetiv()
663 *params = shader->Source ? strlen(shader->Source) + 1 : 0; in GGLShaderGetiv()
671 void GGLShaderGetInfoLog(const gl_shader_t * shader, GLsizei bufsize, GLsizei* length, GLchar* info… in GGLShaderGetInfoLog() argument
675 if (shader->InfoLog) in GGLShaderGetInfoLog()
677 len = strlen(shader->InfoLog); in GGLShaderGetInfoLog()
678 strncpy(infolog, shader->InfoLog, bufsize); in GGLShaderGetInfoLog()