#define GL_BGRA_EXT 0x80E1
#endif
+/* GL_OES_standard_derivatives */
+#ifndef GL_OES_standard_derivatives
+#define GL_FRAGMENT_SHADER_DERIVATIVE_HINT_OES 0x8B8B
+#endif
+
#endif
#define GL_BGRA_EXT 0x80E1
#endif
+/* GL_OES_standard_derivatives */
+#ifndef GL_OES_standard_derivatives
+#define GL_FRAGMENT_SHADER_DERIVATIVE_HINT_OES 0x8B8B
+#endif
+
#endif
CHECK_GL_ERROR(_orig_fastpath_glSampleCoverage(newctx->gl_sample_coverage_value[0],
newctx->gl_sample_coverage_invert[0]))
}
+ STATE_COMPARE(gl_fragment_shader_derivative_hint[0])
+ {
+ CHECK_GL_ERROR(_orig_fastpath_glHint(GL_FRAGMENT_SHADER_DERIVATIVE_HINT_OES, newctx->gl_fragment_shader_derivative_hint[0]))
+ }
}
// _misc_flag2
_COREGL_FASTPATH_FUNC_END();
}
-// Fix Maybe?
void
fastpath_glHint(GLenum target, GLenum mode)
{
_COREGL_FASTPATH_FUNC_BEGIN();
INIT_FASTPATH_GL_FUNC();
- if (target == GL_GENERATE_MIPMAP_HINT)
+ switch (target)
{
- CURR_STATE_COMPARE(gl_generate_mipmap_hint, mode)
- {
- IF_GL_SUCCESS(_orig_fastpath_glHint(target, mode))
+ case GL_GENERATE_MIPMAP_HINT:
+ CURR_STATE_COMPARE(gl_generate_mipmap_hint, mode)
{
- current_ctx->_tex_flag1 |= FLAG_BIT_2;
- current_ctx->gl_generate_mipmap_hint[0] = mode;
+ IF_GL_SUCCESS(_orig_fastpath_glHint(target, mode))
+ {
+ current_ctx->_tex_flag1 |= FLAG_BIT_2;
+ current_ctx->gl_generate_mipmap_hint[0] = mode;
+ }
}
- }
- }
- else
- {
- _set_gl_error(GL_INVALID_ENUM);
- goto finish;
+ break;
+ case GL_FRAGMENT_SHADER_DERIVATIVE_HINT_OES:
+ CURR_STATE_COMPARE(gl_fragment_shader_derivative_hint, mode)
+ {
+ IF_GL_SUCCESS(_orig_fastpath_glHint(target, mode))
+ {
+ current_ctx->_misc_flag1 |= FLAG_BIT_6;
+ current_ctx->gl_fragment_shader_derivative_hint[0] = mode;
+ }
+ }
+ break;
+ default:
+ ERR("\E[0;31;1mERROR : Invalid (or not supported) hint target is specified!\E[0m\n");
+ _set_gl_error(GL_INVALID_ENUM);
+ break;
}
goto finish;
GLUE_STATE(GLfloat, gl_polygon_offset_units, 1, 1, SET_1(0.0f), _sym_glGetFloatv(GL_POLYGON_OFFSET_UNITS, (GLfloat *)value);)
GLUE_STATE(GLclampf, gl_sample_coverage_value, 1, 1, SET_1(1.0f), _sym_glGetFloatv(GL_SAMPLE_COVERAGE_VALUE, (GLfloat *)value);)
GLUE_STATE(GLboolean, gl_sample_coverage_invert, 1, 1, SET_1(GL_FALSE), _sym_glGetBooleanv(GL_SAMPLE_COVERAGE_INVERT, (GLboolean *)value);)
+GLUE_STATE(GLenum, gl_fragment_shader_derivative_hint, 1, 1, SET_1(GL_DONT_CARE), _sym_glGetIntegerv(GL_FRAGMENT_SHADER_DERIVATIVE_HINT_OES, (GLint *)value);)
// MISC FLAG 2
GLUE_STATE(GLint, gl_scissor_box, 4, 4,