Include glGetMultisamplefv API
BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1720963002 Committed: https://skia.googlesource.com/skia/+/69c1b24bcaa7cffd59753a75a7f3d155696fcac4 Review URL: https://codereview.chromium.org/1720963002
This commit is contained in:
parent
b2c0133caf
commit
eb79eea617
@ -144,6 +144,7 @@ public:
|
||||
bool compressedTexSubImageSupport() const { return fCompressedTexSubImageSupport; }
|
||||
bool oversizedStencilSupport() const { return fOversizedStencilSupport; }
|
||||
bool textureBarrierSupport() const { return fTextureBarrierSupport; }
|
||||
bool sampleLocationsSupport() const { return fSampleLocationsSupport; }
|
||||
bool usesMixedSamples() const { return fUsesMixedSamples; }
|
||||
|
||||
bool useDrawInsteadOfClear() const { return fUseDrawInsteadOfClear; }
|
||||
@ -276,6 +277,7 @@ protected:
|
||||
bool fCompressedTexSubImageSupport : 1;
|
||||
bool fOversizedStencilSupport : 1;
|
||||
bool fTextureBarrierSupport : 1;
|
||||
bool fSampleLocationsSupport : 1;
|
||||
bool fUsesMixedSamples : 1;
|
||||
bool fSupportsInstancedDraws : 1;
|
||||
bool fFullClearIsFree : 1;
|
||||
|
@ -89,6 +89,7 @@ typedef GrGLvoid (GR_GL_FUNCTION_TYPE* GrGLGetBufferParameterivProc)(GrGLenum ta
|
||||
typedef GrGLenum (GR_GL_FUNCTION_TYPE* GrGLGetErrorProc)();
|
||||
typedef GrGLvoid (GR_GL_FUNCTION_TYPE* GrGLGetFramebufferAttachmentParameterivProc)(GrGLenum target, GrGLenum attachment, GrGLenum pname, GrGLint* params);
|
||||
typedef GrGLvoid (GR_GL_FUNCTION_TYPE* GrGLGetIntegervProc)(GrGLenum pname, GrGLint* params);
|
||||
typedef GrGLvoid (GR_GL_FUNCTION_TYPE* GrGLGetMultisamplefvProc)(GrGLenum pname, GrGLuint index, GrGLfloat* val);
|
||||
typedef GrGLvoid (GR_GL_FUNCTION_TYPE* GrGLGetProgramInfoLogProc)(GrGLuint program, GrGLsizei bufsize, GrGLsizei* length, char* infolog);
|
||||
typedef GrGLvoid (GR_GL_FUNCTION_TYPE* GrGLGetProgramivProc)(GrGLuint program, GrGLenum pname, GrGLint* params);
|
||||
typedef GrGLvoid (GR_GL_FUNCTION_TYPE* GrGLGetQueryivProc)(GrGLenum GLtarget, GrGLenum pname, GrGLint *params);
|
||||
|
@ -202,6 +202,7 @@ public:
|
||||
GrGLFunction<GrGLGetErrorProc> fGetError;
|
||||
GrGLFunction<GrGLGetFramebufferAttachmentParameterivProc> fGetFramebufferAttachmentParameteriv;
|
||||
GrGLFunction<GrGLGetIntegervProc> fGetIntegerv;
|
||||
GrGLFunction<GrGLGetMultisamplefvProc> fGetMultisamplefv;
|
||||
GrGLFunction<GrGLGetQueryObjecti64vProc> fGetQueryObjecti64v;
|
||||
GrGLFunction<GrGLGetQueryObjectivProc> fGetQueryObjectiv;
|
||||
GrGLFunction<GrGLGetQueryObjectui64vProc> fGetQueryObjectui64v;
|
||||
|
@ -92,6 +92,7 @@ GrCaps::GrCaps(const GrContextOptions& options) {
|
||||
fCompressedTexSubImageSupport = false;
|
||||
fOversizedStencilSupport = false;
|
||||
fTextureBarrierSupport = false;
|
||||
fSampleLocationsSupport = false;
|
||||
fUsesMixedSamples = false;
|
||||
fSupportsInstancedDraws = false;
|
||||
fFullClearIsFree = false;
|
||||
@ -165,6 +166,7 @@ SkString GrCaps::dump() const {
|
||||
r.appendf("Compressed Update Support : %s\n", gNY[fCompressedTexSubImageSupport]);
|
||||
r.appendf("Oversized Stencil Support : %s\n", gNY[fOversizedStencilSupport]);
|
||||
r.appendf("Texture Barrier Support : %s\n", gNY[fTextureBarrierSupport]);
|
||||
r.appendf("Sample Locations Support : %s\n", gNY[fSampleLocationsSupport]);
|
||||
r.appendf("Uses Mixed Samples : %s\n", gNY[fUsesMixedSamples]);
|
||||
r.appendf("Supports instanced draws : %s\n", gNY[fSupportsInstancedDraws]);
|
||||
r.appendf("Full screen clear is free : %s\n", gNY[fFullClearIsFree]);
|
||||
|
@ -162,6 +162,9 @@ const GrGLInterface* GrGLAssembleGLInterface(void* ctx, GrGLGetProc get) {
|
||||
GET_PROC(GetBufferParameteriv);
|
||||
GET_PROC(GetError);
|
||||
GET_PROC(GetIntegerv);
|
||||
if (glVer >= GR_GL_VER(3,2) || extensions.has("GL_ARB_texture_multisample")) {
|
||||
GET_PROC(GetMultisamplefv);
|
||||
}
|
||||
GET_PROC(GetQueryObjectiv);
|
||||
GET_PROC(GetQueryObjectuiv);
|
||||
if (glVer >= GR_GL_VER(3,3) || extensions.has("GL_ARB_timer_query")) {
|
||||
@ -609,6 +612,11 @@ const GrGLInterface* GrGLAssembleGLESInterface(void* ctx, GrGLGetProc get) {
|
||||
GET_PROC(GetBufferParameteriv);
|
||||
GET_PROC(GetError);
|
||||
GET_PROC(GetIntegerv);
|
||||
|
||||
if (version >= GR_GL_VER(3,1)) {
|
||||
GET_PROC(GetMultisamplefv);
|
||||
}
|
||||
|
||||
GET_PROC(GetProgramInfoLog);
|
||||
GET_PROC(GetProgramiv);
|
||||
GET_PROC(GetShaderInfoLog);
|
||||
|
@ -126,6 +126,13 @@ void GrGLCaps::init(const GrContextOptions& contextOptions,
|
||||
fTextureBarrierSupport = ctxInfo.hasExtension("GL_NV_texture_barrier");
|
||||
}
|
||||
|
||||
if (kGL_GrGLStandard == standard) {
|
||||
fSampleLocationsSupport = version >= GR_GL_VER(3,2) ||
|
||||
ctxInfo.hasExtension("GL_ARB_texture_multisample");
|
||||
} else {
|
||||
fSampleLocationsSupport = version >= GR_GL_VER(3,1);
|
||||
}
|
||||
|
||||
// ARB_texture_rg is part of OpenGL 3.0, but mesa doesn't support GL_RED
|
||||
// and GL_RG on FBO textures.
|
||||
if (kMesa_GrGLDriver != ctxInfo.driver()) {
|
||||
|
@ -402,6 +402,7 @@ const GrGLInterface* GrGLCreateNullInterface() {
|
||||
functions->fGetBufferParameteriv = nullGLGetBufferParameteriv;
|
||||
functions->fGetError = noOpGLGetError;
|
||||
functions->fGetIntegerv = noOpGLGetIntegerv;
|
||||
functions->fGetMultisamplefv = noOpGLGetMultisamplefv;
|
||||
functions->fGetQueryObjecti64v = noOpGLGetQueryObjecti64v;
|
||||
functions->fGetQueryObjectiv = noOpGLGetQueryObjectiv;
|
||||
functions->fGetQueryObjectui64v = noOpGLGetQueryObjectui64v;
|
||||
|
@ -382,6 +382,7 @@
|
||||
|
||||
/* multisample */
|
||||
#define GR_GL_MULTISAMPLE 0x809D
|
||||
#define GR_GL_SAMPLE_POSITION 0x8E50
|
||||
|
||||
/* Points */
|
||||
#define GR_GL_POINT_SMOOTH 0x0B10
|
||||
|
@ -499,6 +499,14 @@ bool GrGLInterface::validate() const {
|
||||
}
|
||||
}
|
||||
|
||||
if ((kGL_GrGLStandard == fStandard &&
|
||||
(glVer >= GR_GL_VER(3,2) || fExtensions.has("GL_ARB_texture_multisample"))) ||
|
||||
(kGLES_GrGLStandard == fStandard && glVer >= GR_GL_VER(3,1))) {
|
||||
if (NULL == fFunctions.fGetMultisamplefv) {
|
||||
RETURN_FALSE_INTERFACE
|
||||
}
|
||||
}
|
||||
|
||||
if ((kGL_GrGLStandard == fStandard &&
|
||||
(glVer >= GR_GL_VER(4,3) || fExtensions.has("GL_ARB_program_interface_query"))) ||
|
||||
(kGLES_GrGLStandard == fStandard && glVer >= GR_GL_VER(3,1))) {
|
||||
|
@ -561,6 +561,12 @@ GrGLvoid GR_GL_FUNCTION_TYPE noOpGLGetInfoLog(GrGLuint program,
|
||||
}
|
||||
}
|
||||
|
||||
GrGLvoid GR_GL_FUNCTION_TYPE noOpGLGetMultisamplefv(GrGLenum pname,
|
||||
GrGLuint index,
|
||||
GrGLfloat* val) {
|
||||
val[0] = val[1] = 0.5f;
|
||||
}
|
||||
|
||||
GrGLvoid GR_GL_FUNCTION_TYPE noOpGLGetShaderOrProgramiv(GrGLuint program,
|
||||
GrGLenum pname,
|
||||
GrGLint* params) {
|
||||
|
@ -363,6 +363,8 @@ GrGLvoid GR_GL_FUNCTION_TYPE noOpGLGetInfoLog(GrGLuint program,
|
||||
GrGLsizei* length,
|
||||
char* infolog);
|
||||
|
||||
GrGLvoid GR_GL_FUNCTION_TYPE noOpGLGetMultisamplefv(GrGLenum pname, GrGLuint index, GrGLfloat* val);
|
||||
|
||||
// can be used for both the program and shader params
|
||||
GrGLvoid GR_GL_FUNCTION_TYPE noOpGLGetShaderOrProgramiv(GrGLuint program,
|
||||
GrGLenum pname,
|
||||
|
@ -451,6 +451,7 @@ static GrGLInterface* create_null_interface(State* state) {
|
||||
functions->fGetBufferParameteriv = nullGLGetBufferParameteriv;
|
||||
functions->fGetError = noOpGLGetError;
|
||||
functions->fGetIntegerv = noOpGLGetIntegerv;
|
||||
functions->fGetMultisamplefv = noOpGLGetMultisamplefv;
|
||||
functions->fGetQueryObjecti64v = noOpGLGetQueryObjecti64v;
|
||||
functions->fGetQueryObjectiv = noOpGLGetQueryObjectiv;
|
||||
functions->fGetQueryObjectui64v = noOpGLGetQueryObjectui64v;
|
||||
|
@ -895,6 +895,7 @@ const GrGLInterface* GrGLCreateDebugInterface() {
|
||||
functions->fGetBufferParameteriv = debugGLGetBufferParameteriv;
|
||||
functions->fGetError = noOpGLGetError;
|
||||
functions->fGetIntegerv = noOpGLGetIntegerv;
|
||||
functions->fGetMultisamplefv = noOpGLGetMultisamplefv;
|
||||
functions->fGetQueryObjecti64v = noOpGLGetQueryObjecti64v;
|
||||
functions->fGetQueryObjectiv = noOpGLGetQueryObjectiv;
|
||||
functions->fGetQueryObjectui64v = noOpGLGetQueryObjectui64v;
|
||||
|
Loading…
Reference in New Issue
Block a user