/** * Called by glDepthRange * * \param nearval specifies the Z buffer value which should correspond to * the near clip plane * \param farval specifies the Z buffer value which should correspond to * the far clip plane */ void GLAPIENTRY _mesa_DepthRange(GLclampd nearval, GLclampd farval) { unsigned i; GET_CURRENT_CONTEXT(ctx); if (MESA_VERBOSE&VERBOSE_API) _mesa_debug(ctx, "glDepthRange %f %f\n", nearval, farval); /* The GL_ARB_viewport_array spec says: * * "DepthRange sets the depth range for all viewports to the same * values and is equivalent (assuming no errors are generated) to: * * for (uint i = 0; i < MAX_VIEWPORTS; i++) * DepthRangeIndexed(i, n, f);" * * Set the depth range for all of the viewports supported by the * implementation, but only signal the driver once at the end. */ for (i = 0; i < ctx->Const.MaxViewports; i++) set_depth_range_no_notify(ctx, i, nearval, farval); if (ctx->Driver.DepthRange) { ctx->Driver.DepthRange(ctx); } }
void _mesa_set_depth_range(struct gl_context *ctx, unsigned idx, GLclampd nearval, GLclampd farval) { set_depth_range_no_notify(ctx, idx, nearval, farval); if (ctx->Driver.DepthRange) ctx->Driver.DepthRange(ctx); }
/** * Update a range DepthRange values * * \param first starting array index * \param count count of DepthRange items to update * \param v pointer to memory containing * GLclampd near and far clip-plane values */ static ALWAYS_INLINE void depth_range_arrayv(struct gl_context *ctx, GLuint first, GLsizei count, const struct gl_depthrange_inputs *const inputs) { for (GLsizei i = 0; i < count; i++) set_depth_range_no_notify(ctx, i + first, inputs[i].Near, inputs[i].Far); if (ctx->Driver.DepthRange) ctx->Driver.DepthRange(ctx); }
void GLAPIENTRY _mesa_DepthRangeArrayfvOES(GLuint first, GLsizei count, const GLfloat *v) { int i; GET_CURRENT_CONTEXT(ctx); if (MESA_VERBOSE & VERBOSE_API) _mesa_debug(ctx, "glDepthRangeArrayfv %d %d\n", first, count); if ((first + count) > ctx->Const.MaxViewports) { _mesa_error(ctx, GL_INVALID_VALUE, "glDepthRangeArrayfv: first (%d) + count (%d) >= MaxViewports (%d)", first, count, ctx->Const.MaxViewports); return; } for (i = 0; i < count; i++) set_depth_range_no_notify(ctx, i + first, v[i * 2], v[i * 2 + 1]); if (ctx->Driver.DepthRange) ctx->Driver.DepthRange(ctx); }
/** * Update a range DepthRange values * * \param first starting array index * \param count count of DepthRange items to update * \param v pointer to memory containing * GLclampd near and far clip-plane values */ void GLAPIENTRY _mesa_DepthRangeArrayv(GLuint first, GLsizei count, const GLclampd *v) { int i; const struct gl_depthrange_inputs *const p = (struct gl_depthrange_inputs *) v; GET_CURRENT_CONTEXT(ctx); if (MESA_VERBOSE & VERBOSE_API) _mesa_debug(ctx, "glDepthRangeArrayv %d %d\n", first, count); if ((first + count) > ctx->Const.MaxViewports) { _mesa_error(ctx, GL_INVALID_VALUE, "glDepthRangev: first (%d) + count (%d) >= MaxViewports (%d)", first, count, ctx->Const.MaxViewports); return; } for (i = 0; i < count; i++) set_depth_range_no_notify(ctx, i + first, p[i].Near, p[i].Far); if (ctx->Driver.DepthRange) ctx->Driver.DepthRange(ctx); }