diff options
author | Timothy Arceri <[email protected]> | 2016-03-10 11:40:37 +1100 |
---|---|---|
committer | Timothy Arceri <[email protected]> | 2016-03-31 12:52:43 +1100 |
commit | 51142e7705a5e0c28de9fc097fa7c8446ba0cffe (patch) | |
tree | a581166672d1b3227bfc50924874e4b914e2f92b | |
parent | 047139e8a027d81141b6e0b1bc939942e873f3ce (diff) |
mesa: add support to query GL_OFFSET for GL_TRANSFORM_FEEDBACK_VARYING
Reviewed-by: Dave Airlie <[email protected]>
-rw-r--r-- | src/compiler/glsl/link_varyings.cpp | 1 | ||||
-rw-r--r-- | src/mesa/main/mtypes.h | 1 | ||||
-rw-r--r-- | src/mesa/main/shader_query.cpp | 14 |
3 files changed, 13 insertions, 3 deletions
diff --git a/src/compiler/glsl/link_varyings.cpp b/src/compiler/glsl/link_varyings.cpp index d486b691f58..b091eaf5512 100644 --- a/src/compiler/glsl/link_varyings.cpp +++ b/src/compiler/glsl/link_varyings.cpp @@ -742,6 +742,7 @@ tfeedback_decl::store(struct gl_context *ctx, struct gl_shader_program *prog, } else { xfb_offset = info->Buffers[buffer].Stride; } + info->Varyings[info->NumVarying].Offset = xfb_offset * 4; unsigned location = this->location; unsigned location_frac = this->location_frac; diff --git a/src/mesa/main/mtypes.h b/src/mesa/main/mtypes.h index 1e15b69ab70..320297cdfe9 100644 --- a/src/mesa/main/mtypes.h +++ b/src/mesa/main/mtypes.h @@ -1619,6 +1619,7 @@ struct gl_transform_feedback_varying_info char *Name; GLenum Type; GLint Size; + GLint Offset; }; diff --git a/src/mesa/main/shader_query.cpp b/src/mesa/main/shader_query.cpp index 247a26d4fda..15cc49afbfc 100644 --- a/src/mesa/main/shader_query.cpp +++ b/src/mesa/main/shader_query.cpp @@ -1186,9 +1186,17 @@ _mesa_program_resource_prop(struct gl_shader_program *shProg, goto invalid_operation; } case GL_OFFSET: - VALIDATE_TYPE_2(GL_UNIFORM, GL_BUFFER_VARIABLE); - *val = RESOURCE_UNI(res)->offset; - return 1; + switch (res->Type) { + case GL_UNIFORM: + case GL_BUFFER_VARIABLE: + *val = RESOURCE_UNI(res)->offset; + return 1; + case GL_TRANSFORM_FEEDBACK_VARYING: + *val = RESOURCE_XFV(res)->Offset; + return 1; + default: + goto invalid_operation; + } case GL_BLOCK_INDEX: VALIDATE_TYPE_2(GL_UNIFORM, GL_BUFFER_VARIABLE); *val = RESOURCE_UNI(res)->block_index; |