glsl/linker: Fix xfb stride alignment for buffers containing 64bit types
Per OpenGL 4.6 spec: "If no xfb_stride qualifier is specified for a binding point, the stride is derived by identifying the variable associated with the binding point having the largest offset, and then adding the offset and the size of the variable, in basic machine units. If any variable associated with the binding point contains double-precision floating-point components, the derived stride is aligned to the next multiple of eight basic machine units. If a binding point has no xfb_stride qualifier and no associated output variables, its stride is zero." Reviewed-by: Tapani Pälli <tapani.palli@intel.com> Signed-off-by: Andrii Simiklit <andrii.simiklit@globallogic.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/2333>
This commit is contained in:

committed by
Marge Bot

parent
67e33db4a6
commit
7661320815
@@ -106,8 +106,8 @@ public:
|
||||
struct gl_transform_feedback_info *info, unsigned buffer,
|
||||
unsigned buffer_index, const unsigned max_outputs,
|
||||
BITSET_WORD *used_components[MAX_FEEDBACK_BUFFERS],
|
||||
bool *explicit_stride, bool has_xfb_qualifiers,
|
||||
const void *mem_ctx) const;
|
||||
bool *explicit_stride, unsigned *max_member_alignment,
|
||||
bool has_xfb_qualifiers, const void *mem_ctx) const;
|
||||
const tfeedback_candidate *find_candidate(gl_shader_program *prog,
|
||||
hash_table *tfeedback_candidates);
|
||||
void set_lowered_candidate(const tfeedback_candidate *candidate);
|
||||
|
Reference in New Issue
Block a user