ctx->Multisample.SampleCoverage = GL_FALSE;
ctx->Multisample.SampleCoverageValue = 1.0;
ctx->Multisample.SampleCoverageInvert = GL_FALSE;
+ ctx->Multisample.SampleShading = GL_FALSE;
+ ctx->Multisample.MinSampleShadingValue = 0.0f;
/* ARB_texture_multisample / GL3.2 additions */
ctx->Multisample.SampleMask = GL_FALSE;
switch (pname) {
case GL_SAMPLE_POSITION: {
- if ((int) index >= ctx->DrawBuffer->Visual.samples) {
+ if (index >= ctx->DrawBuffer->Visual.samples) {
_mesa_error( ctx, GL_INVALID_VALUE, "glGetMultisamplefv(index)" );
return;
}
return;
}
+ case GL_PROGRAMMABLE_SAMPLE_LOCATION_ARB:
+ if (!ctx->Extensions.ARB_sample_locations) {
+ _mesa_error( ctx, GL_INVALID_ENUM, "glGetMultisamplefv(pname)" );
+ return;
+ }
+
+ if (index >= MAX_SAMPLE_LOCATION_TABLE_SIZE * 2) {
+ _mesa_error( ctx, GL_INVALID_VALUE, "glGetMultisamplefv(index)" );
+ return;
+ }
+
+ if (ctx->DrawBuffer->SampleLocationTable)
+ *val = ctx->DrawBuffer->SampleLocationTable[index];
+ else
+ *val = 0.5f;
+
+ return;
+
default:
_mesa_error( ctx, GL_INVALID_ENUM, "glGetMultisamplefv(pname)" );
return;
sample_maski(ctx, index, mask);
}
+static void
+min_sample_shading(struct gl_context *ctx, GLclampf value)
+{
+ value = CLAMP(value, 0.0f, 1.0f);
+
+ if (ctx->Multisample.MinSampleShadingValue == value)
+ return;
+
+ FLUSH_VERTICES(ctx,
+ ctx->DriverFlags.NewSampleShading ? 0 : _NEW_MULTISAMPLE);
+ ctx->NewDriverState |= ctx->DriverFlags.NewSampleShading;
+ ctx->Multisample.MinSampleShadingValue = value;
+}
+
/**
* Called via glMinSampleShadingARB
*/
+void GLAPIENTRY
+_mesa_MinSampleShading_no_error(GLclampf value)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ min_sample_shading(ctx, value);
+}
+
void GLAPIENTRY
_mesa_MinSampleShading(GLclampf value)
{
return;
}
- value = CLAMP(value, 0.0f, 1.0f);
-
- if (ctx->Multisample.MinSampleShadingValue == value)
- return;
-
- FLUSH_VERTICES(ctx,
- ctx->DriverFlags.NewSampleShading ? 0 : _NEW_MULTISAMPLE);
- ctx->NewDriverState |= ctx->DriverFlags.NewSampleShading;
- ctx->Multisample.MinSampleShadingValue = value;
+ min_sample_shading(ctx, value);
}
/**