Lines Matching refs:program
206 gl_shader_program * program = hieralloc_zero(NULL, struct gl_shader_program); in GGLShaderProgramCreate() local
207 if (!program) in GGLShaderProgramCreate()
209 program->Attributes = hieralloc_zero(program, gl_program_parameter_list); in GGLShaderProgramCreate()
210 if (!program->Attributes) { in GGLShaderProgramCreate()
211 hieralloc_free(program); in GGLShaderProgramCreate()
214 program->Varying = hieralloc_zero(program, gl_program_parameter_list); in GGLShaderProgramCreate()
215 if (!program->Varying) { in GGLShaderProgramCreate()
216 hieralloc_free(program); in GGLShaderProgramCreate()
219 return program; in GGLShaderProgramCreate()
225 gl_shader_program * program = GGLShaderProgramCreate(); in ShaderProgramCreate() local
226 if (!program) in ShaderProgramCreate()
228 return program; in ShaderProgramCreate()
231 unsigned GGLShaderAttach(gl_shader_program * program, gl_shader * shader) in GGLShaderAttach() argument
233 for (unsigned i = 0; i < program->NumShaders; i++) in GGLShaderAttach()
234 if (program->Shaders[i]->Type == shader->Type || program->Shaders[i] == shader) in GGLShaderAttach()
237 program->Shaders = (gl_shader **)hieralloc_realloc in GGLShaderAttach()
238 (program, program->Shaders, gl_shader *, program->NumShaders + 1); in GGLShaderAttach()
239 if (!program->Shaders) { in GGLShaderAttach()
243 program->Shaders[program->NumShaders] = shader; in GGLShaderAttach()
244 program->NumShaders++; in GGLShaderAttach()
249 static void ShaderAttach(const GGLInterface * iface, gl_shader_program * program, in ShaderAttach() argument
252 unsigned error = GGLShaderAttach(program, shader); in ShaderAttach()
257 GLboolean GGLShaderProgramLink(gl_shader_program * program, const char ** infoLog) in GGLShaderProgramLink() argument
259 link_shaders(glContext.ctx, program); in GGLShaderProgramLink()
261 *infoLog = program->InfoLog; in GGLShaderProgramLink()
262 if (!program->LinkStatus) in GGLShaderProgramLink()
263 return program->LinkStatus; in GGLShaderProgramLink()
264 …"slots: attribute=%d varying=%d uniforms=%d \n", program->AttributeSlots, program->VaryingSlots, p… in GGLShaderProgramLink()
273 for (unsigned i = 0; i < program->Uniforms->NumUniforms; i++) { in GGLShaderProgramLink()
274 const gl_uniform & uniform = program->Uniforms->Uniforms[i]; in GGLShaderProgramLink()
277 return program->LinkStatus; in GGLShaderProgramLink()
280 static GLboolean ShaderProgramLink(gl_shader_program * program, const char ** infoLog) in ShaderProgramLink() argument
282 return GGLShaderProgramLink(program, infoLog); in ShaderProgramLink()
361 const gl_shader_program * program; member
387 gl_shader_program * program, const GGLState * gglCtx) in CodeGen() argument
389 SymbolLookupContext ctx = {gglCtx, program, shader}; in CodeGen()
420 void GenerateScanLine(const GGLState * gglCtx, const gl_shader_program * program, llvm::Module * mo…
423 void GGLShaderUse(void * llvmCtx, const GGLState * gglState, gl_shader_program * program) in GGLShaderUse() argument
427 if (!program->_LinkedShaders[i]) in GGLShaderUse()
429 gl_shader * shader = program->_LinkedShaders[i]; in GGLShaderUse()
521 GenerateScanLine(gglState, program, module, mainName, scanlineName); in GGLShaderUse()
522 CodeGen(instance, scanlineName, shader, program, gglState); in GGLShaderUse()
525 CodeGen(instance, mainName, shader, program, gglState); in GGLShaderUse()
540 static void ShaderUse(GGLInterface * iface, gl_shader_program * program) in ShaderUse() argument
545 if (!program) { in ShaderUse()
550 GGLShaderUse(ctx->llvmCtx, &ctx->state, program); in ShaderUse()
552 if (!program->_LinkedShaders[i]) in ShaderUse()
554 if (!program->_LinkedShaders[i]->function) in ShaderUse()
556 if (GL_VERTEX_SHADER == program->_LinkedShaders[i]->Type) in ShaderUse()
558 else if (GL_FRAGMENT_SHADER == program->_LinkedShaders[i]->Type) in ShaderUse()
563 ctx->CurrentProgram = program; in ShaderUse()
566 unsigned GGLShaderDetach(gl_shader_program * program, gl_shader * shader) in GGLShaderDetach() argument
568 for (unsigned i = 0; i < program->NumShaders; i++) in GGLShaderDetach()
569 if (program->Shaders[i] == shader) { in GGLShaderDetach()
570 program->NumShaders--; in GGLShaderDetach()
572 program->Shaders[i] = program->Shaders[program->NumShaders]; in GGLShaderDetach()
581 static void ShaderDetach(const GGLInterface * iface, gl_shader_program * program, in ShaderDetach() argument
584 unsigned error = GGLShaderDetach(program, shader); in ShaderDetach()
589 void GGLShaderProgramDelete(gl_shader_program * program) in GGLShaderProgramDelete() argument
591 for (unsigned i = 0; i < program->NumShaders; i++) { in GGLShaderProgramDelete()
592 GGLShaderDelete(program->Shaders[i]); // actually just mark for delete in GGLShaderProgramDelete()
593 GGLShaderDetach(program, program->Shaders[i]); // detach will delete if ref == 1 in GGLShaderProgramDelete()
598 GGLShaderDelete(program->_LinkedShaders[i]); in GGLShaderProgramDelete()
600 hieralloc_free(program); in GGLShaderProgramDelete()
603 static void ShaderProgramDelete(GGLInterface * iface, gl_shader_program * program) in ShaderProgramDelete() argument
606 if (ctx->CurrentProgram == program) { in ShaderProgramDelete()
610 GGLShaderProgramDelete(program); in ShaderProgramDelete()
651 void GGLShaderProgramGetiv(const gl_shader_program_t * program, const GLenum pname, GLint * params) in GGLShaderProgramGetiv() argument
655 *params = program->DeletePending; in GGLShaderProgramGetiv()
658 *params = program->LinkStatus; in GGLShaderProgramGetiv()
661 *params = program->LinkStatus; in GGLShaderProgramGetiv()
664 *params = program->InfoLog ? strlen(program->InfoLog) + 1 : 0; in GGLShaderProgramGetiv()
667 *params = program->NumShaders; in GGLShaderProgramGetiv()
670 *params = program->AttributeSlots; in GGLShaderProgramGetiv()
673 *params = program->Uniforms->Slots; in GGLShaderProgramGetiv()
684 void GGLShaderProgramGetInfoLog(const gl_shader_program_t * program, GLsizei bufsize, GLsizei* leng… in GGLShaderProgramGetInfoLog() argument
688 if (program->InfoLog) in GGLShaderProgramGetInfoLog()
690 len = strlen(program->InfoLog); in GGLShaderProgramGetInfoLog()
691 strncpy(infolog, program->InfoLog, bufsize); in GGLShaderProgramGetInfoLog()
698 void GGLShaderAttributeBind(const gl_shader_program * program, GLuint index, const GLchar * name) in GGLShaderAttributeBind() argument
700 int i = _mesa_add_parameter(program->Attributes, name); in GGLShaderAttributeBind()
701 program->Attributes->Parameters[i].BindLocation = index; in GGLShaderAttributeBind()
704 GLint GGLShaderAttributeLocation(const gl_shader_program * program, const char * name) in GGLShaderAttributeLocation() argument
706 int i = _mesa_get_parameter(program->Attributes, name); in GGLShaderAttributeLocation()
708 return program->Attributes->Parameters[i].Location; in GGLShaderAttributeLocation()
712 GLint GGLShaderVaryingLocation(const gl_shader_program_t * program, in GGLShaderVaryingLocation() argument
715 for (unsigned int i = 0; i < program->Varying->NumParameters; i++) in GGLShaderVaryingLocation()
716 if (!strcmp(program->Varying->Parameters[i].Name, name)) { in GGLShaderVaryingLocation()
718 *vertexOutputLocation = program->Varying->Parameters[i].BindLocation; in GGLShaderVaryingLocation()
719 return program->Varying->Parameters[i].Location; in GGLShaderVaryingLocation()
724 GLint GGLShaderUniformLocation(const gl_shader_program * program, in GGLShaderUniformLocation() argument
727 for (unsigned i = 0; i < program->Uniforms->NumUniforms; i++) in GGLShaderUniformLocation()
728 if (!strcmp(program->Uniforms->Uniforms[i].Name, name)) in GGLShaderUniformLocation()
733 void GGLShaderUniformGetfv(gl_shader_program * program, GLint location, GLfloat * params) in GGLShaderUniformGetfv() argument
735 assert(0 <= location && program->Uniforms->NumUniforms > location); in GGLShaderUniformGetfv()
736 int index = program->Uniforms->Uniforms[location].Pos; in GGLShaderUniformGetfv()
737 assert(0 <= index && program->Uniforms->Slots > index); in GGLShaderUniformGetfv()
738 memcpy(params, program->ValuesUniform + index, sizeof(*program->ValuesUniform)); in GGLShaderUniformGetfv()
741 void GGLShaderUniformGetiv(gl_shader_program * program, GLint location, GLint * params) in GGLShaderUniformGetiv() argument
743 assert(0 <= location && program->Uniforms->NumUniforms > location); in GGLShaderUniformGetiv()
744 int index = program->Uniforms->Uniforms[location].Pos; in GGLShaderUniformGetiv()
745 assert(0 <= index && program->Uniforms->Slots > index); in GGLShaderUniformGetiv()
746 const float * uniform = program->ValuesUniform[index]; in GGLShaderUniformGetiv()
753 void GGLShaderUniformGetSamplers(const gl_shader_program_t * program, in GGLShaderUniformGetSamplers() argument
762 for (unsigned i = 0; i < program->Uniforms->NumUniforms; i++) { in GGLShaderUniformGetSamplers()
763 const gl_uniform & uniform = program->Uniforms->Uniforms[i]; in GGLShaderUniformGetSamplers()
766 … sampler2tmu[uniform.Pos] = program->ValuesUniform[program->Uniforms->Slots + uniform.Pos][0]; in GGLShaderUniformGetSamplers()
772 GLint GGLShaderUniform(gl_shader_program * program, GLint location, GLsizei count, in GGLShaderUniform() argument
777 if (!program) { in GGLShaderUniform()
783 assert(0 <= location && program->Uniforms->NumUniforms > location); in GGLShaderUniform()
784 const gl_uniform & uniform = program->Uniforms->Uniforms[location]; in GGLShaderUniform()
788 start = uniform.Pos + program->Uniforms->Slots; in GGLShaderUniform()
790 program->ValuesUniform[start][0] = *(float *)values; in GGLShaderUniform()
829 if (start + slots > program->Uniforms->Slots) in GGLShaderUniform()
832 memcpy(program->ValuesUniform + start + i, values, elems * sizeof(float)); in GGLShaderUniform()
837 void GGLShaderUniformMatrix(gl_shader_program * program, GLint cols, GLint rows, in GGLShaderUniformMatrix() argument
844 assert(0 <= location && program->Uniforms->NumUniforms > location); in GGLShaderUniformMatrix()
845 int start = program->Uniforms->Uniforms[location].Pos; in GGLShaderUniformMatrix()
847 if (start < 0 || start + slots > program->Uniforms->Slots) in GGLShaderUniformMatrix()
850 float * column = program->ValuesUniform[start + i]; in GGLShaderUniformMatrix()