shaders/sso-uniforms-02: skip
shaders/sso-user-varying-01: skip
shaders/sso-user-varying-02: skip
-shaders/useprogram-refcount-1: crash
shaders/useshaderprogram-bad-program: skip
shaders/useshaderprogram-bad-type: skip
shaders/useshaderprogram-flushverts-1: skip
spec/arb_framebuffer_no_attachments/arb_framebuffer_no_attachments-params/dsa: skip
spec/arb_framebuffer_no_attachments/arb_framebuffer_no_attachments-query/ms2: skip
spec/arb_framebuffer_object/fbo-blit-scaled-linear: fail
-spec/arb_framebuffer_object/fbo-drawbuffers-none gldrawpixels: crash
spec/arb_geometry_shader4/arb_geometry_shader4-ignore-adjacent-vertices gl_line_strip_adjacency: skip
spec/arb_geometry_shader4/arb_geometry_shader4-ignore-adjacent-vertices gl_lines_adjacency: skip
spec/arb_geometry_shader4/arb_geometry_shader4-ignore-adjacent-vertices gl_triangle_strip_adjacency: skip
}
}
+void
+_mesa_ensure_and_associate_uniform_storage(struct gl_context *ctx,
+ struct gl_shader_program *shader_program,
+ struct gl_program *prog, unsigned required_space)
+{
+ /* Avoid reallocation of the program parameter list, because the uniform
+ * storage is only associated with the original parameter list.
+ */
+ _mesa_reserve_parameter_storage(prog->Parameters, required_space,
+ required_space);
+
+ /* This has to be done last. Any operation the can cause
+ * prog->ParameterValues to get reallocated (e.g., anything that adds a
+ * program constant) has to happen before creating this linkage.
+ */
+ _mesa_associate_uniform_storage(ctx, shader_program, prog);
+}
+
/*
* On a basic block basis, tracks available PROGRAM_TEMPORARY register
* channels for copy propagation and updates following instructions to
struct gl_shader_program *shader_program,
struct gl_program *prog);
+void
+_mesa_ensure_and_associate_uniform_storage(struct gl_context *ctx,
+ struct gl_shader_program *shader_program,
+ struct gl_program *prog, unsigned required_space);
+
#ifdef __cplusplus
}
#endif
* storage is only associated with the original parameter list.
* This should be enough for Bitmap and DrawPixels constants.
*/
- _mesa_reserve_parameter_storage(prog->Parameters, 16, 16);
-
- /* This has to be done last. Any operation the can cause
- * prog->ParameterValues to get reallocated (e.g., anything that adds a
- * program constant) has to happen before creating this linkage.
- */
- _mesa_associate_uniform_storage(st->ctx, shader_program, prog);
+ _mesa_ensure_and_associate_uniform_storage(st->ctx, shader_program, prog, 16);
st_set_prog_affected_state_flags(prog);
* storage is only associated with the original parameter list.
* This should be enough for Bitmap and DrawPixels constants.
*/
- _mesa_reserve_parameter_storage(prog->Parameters, 8, 8);
-
- /* This has to be done last. Any operation the can cause
- * prog->ParameterValues to get reallocated (e.g., anything that adds a
- * program constant) has to happen before creating this linkage.
- */
- _mesa_associate_uniform_storage(ctx, shader_program, prog);
+ _mesa_ensure_and_associate_uniform_storage(ctx, shader_program, prog, 8);
if (!shader_program->data->LinkStatus) {
free_glsl_to_tgsi_visitor(v);
_mesa_reference_program(ctx, &shader->Program, NULL);
uint8_t *buffer = (uint8_t *) prog->driver_cache_blob;
st_set_prog_affected_state_flags(prog);
- _mesa_associate_uniform_storage(ctx, shProg, prog);
+
+ /* Avoid reallocation of the program parameter list, because the uniform
+ * storage is only associated with the original parameter list.
+ * This should be enough for Bitmap and DrawPixels constants.
+ */
+ _mesa_ensure_and_associate_uniform_storage(ctx, shProg, prog, 16);
assert(prog->driver_cache_blob && prog->driver_cache_blob_size > 0);