From 8af48fc4d62798dbcc00bcfbbd8bc8f3b47982c7 Mon Sep 17 00:00:00 2001 From: Michal Krol Date: Tue, 14 Mar 2006 11:23:16 +0000 Subject: More GLSL code: - add texture sampling support; - fix assembly codegen bugs; --- src/mesa/shader/shaderobjects.c | 99 ++++++++++++++++++++++++----------------- 1 file changed, 57 insertions(+), 42 deletions(-) (limited to 'src/mesa/shader/shaderobjects.c') diff --git a/src/mesa/shader/shaderobjects.c b/src/mesa/shader/shaderobjects.c index 4c4fdcfe55..ad55b7448c 100644 --- a/src/mesa/shader/shaderobjects.c +++ b/src/mesa/shader/shaderobjects.c @@ -343,34 +343,13 @@ _mesa_ValidateProgramARB (GLhandleARB programObj) } } -/* -Errors TODO - - The error INVALID_OPERATION is generated by the Uniform*ARB if the - number of values loaded results in exceeding the declared extent of a - uniform. - - The error INVALID_OPERATION is generated by the Uniform*ARB commands if - the size does not match the size of the uniform declared in the shader. - - The error INVALID_OPERATION is generated by the Uniform*ARB commands if - the type does not match the type of the uniform declared in the shader, - if the uniform is not of type Boolean. - - The error INVALID_OPERATION is generated by the Uniform*ARB commands if - does not exist for the program object currently in use. - - The error INVALID_OPERATION is generated if a uniform command other than - Uniform1i{v}ARB is used to load a sampler value. - - -*/ - GLvoid GLAPIENTRY _mesa_Uniform1fARB (GLint location, GLfloat v0) { GET_CURRENT_CONTEXT(ctx); - GET_CURRENT_LINKED_PROGRAM(pro, "glUniform1fARB"); + GET_CURRENT_LINKED_PROGRAM(pro, "glUniform1fARB"); + + FLUSH_VERTICES(ctx, _NEW_PROGRAM); if (pro != NULL) { @@ -383,7 +362,9 @@ GLvoid GLAPIENTRY _mesa_Uniform2fARB (GLint location, GLfloat v0, GLfloat v1) { GET_CURRENT_CONTEXT(ctx); - GET_CURRENT_LINKED_PROGRAM(pro, "glUniform2fARB"); + GET_CURRENT_LINKED_PROGRAM(pro, "glUniform2fARB"); + + FLUSH_VERTICES(ctx, _NEW_PROGRAM); if (pro != NULL) { @@ -398,7 +379,9 @@ GLvoid GLAPIENTRY _mesa_Uniform3fARB (GLint location, GLfloat v0, GLfloat v1, GLfloat v2) { GET_CURRENT_CONTEXT(ctx); - GET_CURRENT_LINKED_PROGRAM(pro, "glUniform3fARB"); + GET_CURRENT_LINKED_PROGRAM(pro, "glUniform3fARB"); + + FLUSH_VERTICES(ctx, _NEW_PROGRAM); if (pro != NULL) { @@ -413,7 +396,9 @@ GLvoid GLAPIENTRY _mesa_Uniform4fARB (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3) { GET_CURRENT_CONTEXT(ctx); - GET_CURRENT_LINKED_PROGRAM(pro, "glUniform4fARB"); + GET_CURRENT_LINKED_PROGRAM(pro, "glUniform4fARB"); + + FLUSH_VERTICES(ctx, _NEW_PROGRAM); if (pro != NULL) { @@ -428,7 +413,9 @@ GLvoid GLAPIENTRY _mesa_Uniform1iARB (GLint location, GLint v0) { GET_CURRENT_CONTEXT(ctx); - GET_CURRENT_LINKED_PROGRAM(pro, "glUniform1iARB"); + GET_CURRENT_LINKED_PROGRAM(pro, "glUniform1iARB"); + + FLUSH_VERTICES(ctx, _NEW_PROGRAM); if (pro != NULL) { @@ -441,7 +428,9 @@ GLvoid GLAPIENTRY _mesa_Uniform2iARB (GLint location, GLint v0, GLint v1) { GET_CURRENT_CONTEXT(ctx); - GET_CURRENT_LINKED_PROGRAM(pro, "glUniform2iARB"); + GET_CURRENT_LINKED_PROGRAM(pro, "glUniform2iARB"); + + FLUSH_VERTICES(ctx, _NEW_PROGRAM); if (pro != NULL) { @@ -456,7 +445,9 @@ GLvoid GLAPIENTRY _mesa_Uniform3iARB (GLint location, GLint v0, GLint v1, GLint v2) { GET_CURRENT_CONTEXT(ctx); - GET_CURRENT_LINKED_PROGRAM(pro, "glUniform3iARB"); + GET_CURRENT_LINKED_PROGRAM(pro, "glUniform3iARB"); + + FLUSH_VERTICES(ctx, _NEW_PROGRAM); if (pro != NULL) { @@ -471,7 +462,9 @@ GLvoid GLAPIENTRY _mesa_Uniform4iARB (GLint location, GLint v0, GLint v1, GLint v2, GLint v3) { GET_CURRENT_CONTEXT(ctx); - GET_CURRENT_LINKED_PROGRAM(pro, "glUniform4iARB"); + GET_CURRENT_LINKED_PROGRAM(pro, "glUniform4iARB"); + + FLUSH_VERTICES(ctx, _NEW_PROGRAM); if (pro != NULL) { @@ -486,7 +479,9 @@ GLvoid GLAPIENTRY _mesa_Uniform1fvARB (GLint location, GLsizei count, const GLfloat *value) { GET_CURRENT_CONTEXT(ctx); - GET_CURRENT_LINKED_PROGRAM(pro, "glUniform1fvARB"); + GET_CURRENT_LINKED_PROGRAM(pro, "glUniform1fvARB"); + + FLUSH_VERTICES(ctx, _NEW_PROGRAM); if (pro != NULL) { @@ -499,7 +494,9 @@ GLvoid GLAPIENTRY _mesa_Uniform2fvARB (GLint location, GLsizei count, const GLfloat *value) { GET_CURRENT_CONTEXT(ctx); - GET_CURRENT_LINKED_PROGRAM(pro, "glUniform2fvARB"); + GET_CURRENT_LINKED_PROGRAM(pro, "glUniform2fvARB"); + + FLUSH_VERTICES(ctx, _NEW_PROGRAM); if (pro != NULL) { @@ -512,7 +509,9 @@ GLvoid GLAPIENTRY _mesa_Uniform3fvARB (GLint location, GLsizei count, const GLfloat *value) { GET_CURRENT_CONTEXT(ctx); - GET_CURRENT_LINKED_PROGRAM(pro, "glUniform3fvARB"); + GET_CURRENT_LINKED_PROGRAM(pro, "glUniform3fvARB"); + + FLUSH_VERTICES(ctx, _NEW_PROGRAM); if (pro != NULL) { @@ -525,7 +524,9 @@ GLvoid GLAPIENTRY _mesa_Uniform4fvARB (GLint location, GLsizei count, const GLfloat *value) { GET_CURRENT_CONTEXT(ctx); - GET_CURRENT_LINKED_PROGRAM(pro, "glUniform4fvARB"); + GET_CURRENT_LINKED_PROGRAM(pro, "glUniform4fvARB"); + + FLUSH_VERTICES(ctx, _NEW_PROGRAM); if (pro != NULL) { @@ -538,7 +539,9 @@ GLvoid GLAPIENTRY _mesa_Uniform1ivARB (GLint location, GLsizei count, const GLint *value) { GET_CURRENT_CONTEXT(ctx); - GET_CURRENT_LINKED_PROGRAM(pro, "glUniform1ivARB"); + GET_CURRENT_LINKED_PROGRAM(pro, "glUniform1ivARB"); + + FLUSH_VERTICES(ctx, _NEW_PROGRAM); if (pro != NULL) { @@ -551,7 +554,9 @@ GLvoid GLAPIENTRY _mesa_Uniform2ivARB (GLint location, GLsizei count, const GLint *value) { GET_CURRENT_CONTEXT(ctx); - GET_CURRENT_LINKED_PROGRAM(pro, "glUniform2ivARB"); + GET_CURRENT_LINKED_PROGRAM(pro, "glUniform2ivARB"); + + FLUSH_VERTICES(ctx, _NEW_PROGRAM); if (pro != NULL) { @@ -564,7 +569,9 @@ GLvoid GLAPIENTRY _mesa_Uniform3ivARB (GLint location, GLsizei count, const GLint *value) { GET_CURRENT_CONTEXT(ctx); - GET_CURRENT_LINKED_PROGRAM(pro, "glUniform3ivARB"); + GET_CURRENT_LINKED_PROGRAM(pro, "glUniform3ivARB"); + + FLUSH_VERTICES(ctx, _NEW_PROGRAM); if (pro != NULL) { @@ -577,7 +584,9 @@ GLvoid GLAPIENTRY _mesa_Uniform4ivARB (GLint location, GLsizei count, const GLint *value) { GET_CURRENT_CONTEXT(ctx); - GET_CURRENT_LINKED_PROGRAM(pro, "glUniform4ivARB"); + GET_CURRENT_LINKED_PROGRAM(pro, "glUniform4ivARB"); + + FLUSH_VERTICES(ctx, _NEW_PROGRAM); if (pro != NULL) { @@ -590,7 +599,9 @@ GLvoid GLAPIENTRY _mesa_UniformMatrix2fvARB (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) { GET_CURRENT_CONTEXT(ctx); - GET_CURRENT_LINKED_PROGRAM(pro, "glUniformMatrix2fvARB"); + GET_CURRENT_LINKED_PROGRAM(pro, "glUniformMatrix2fvARB"); + + FLUSH_VERTICES(ctx, _NEW_PROGRAM); if (pro != NULL) { @@ -628,7 +639,9 @@ GLvoid GLAPIENTRY _mesa_UniformMatrix3fvARB (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) { GET_CURRENT_CONTEXT(ctx); - GET_CURRENT_LINKED_PROGRAM(pro, "glUniformMatrix3fvARB"); + GET_CURRENT_LINKED_PROGRAM(pro, "glUniformMatrix3fvARB"); + + FLUSH_VERTICES(ctx, _NEW_PROGRAM); if (pro != NULL) { @@ -671,7 +684,9 @@ GLvoid GLAPIENTRY _mesa_UniformMatrix4fvARB (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) { GET_CURRENT_CONTEXT(ctx); - GET_CURRENT_LINKED_PROGRAM(pro, "glUniformMatrix4fvARB"); + GET_CURRENT_LINKED_PROGRAM(pro, "glUniformMatrix4fvARB"); + + FLUSH_VERTICES(ctx, _NEW_PROGRAM); if (pro != NULL) { -- cgit v1.2.3