Add image functions to GrGLInterface
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=4840 Change-Id: I250cc4e637765c321c90e33c9b3f25c4ad12fe04 Reviewed-on: https://skia-review.googlesource.com/4840 Reviewed-by: Chris Dalton <csmartdalton@google.com> Commit-Queue: Brian Salomon <bsalomon@google.com>
This commit is contained in:
parent
d327e8c3d0
commit
0b63ceb10c
@ -24,6 +24,7 @@ typedef GrGLvoid (GR_GL_FUNCTION_TYPE* GrGLBindAttribLocationProc)(GrGLuint prog
|
||||
typedef GrGLvoid (GR_GL_FUNCTION_TYPE* GrGLBindBufferProc)(GrGLenum target, GrGLuint buffer);
|
||||
typedef GrGLvoid (GR_GL_FUNCTION_TYPE* GrGLBindFramebufferProc)(GrGLenum target, GrGLuint framebuffer);
|
||||
typedef GrGLvoid (GR_GL_FUNCTION_TYPE* GrGLBindRenderbufferProc)(GrGLenum target, GrGLuint renderbuffer);
|
||||
typedef GrGLvoid (GR_GL_FUNCTION_TYPE* GrGLBindImageTextureProc)(GrGLuint unit, GrGLuint texture, GrGLint level, GrGLboolean layered, GrGLint layer, GrGLenum access, GrGLenum format);
|
||||
typedef GrGLvoid (GR_GL_FUNCTION_TYPE* GrGLBindTextureProc)(GrGLenum target, GrGLuint texture);
|
||||
typedef GrGLvoid (GR_GL_FUNCTION_TYPE* GrGLBindFragDataLocationProc)(GrGLuint program, GrGLuint colorNumber, const GrGLchar* name);
|
||||
typedef GrGLvoid (GR_GL_FUNCTION_TYPE* GrGLBindFragDataLocationIndexedProc)(GrGLuint program, GrGLuint colorNumber, GrGLuint index, const GrGLchar * name);
|
||||
@ -118,6 +119,8 @@ typedef GrGLvoid* (GR_GL_FUNCTION_TYPE* GrGLMapBufferProc)(GrGLenum target, GrGL
|
||||
typedef GrGLvoid* (GR_GL_FUNCTION_TYPE* GrGLMapBufferRangeProc)(GrGLenum target, GrGLintptr offset, GrGLsizeiptr length, GrGLbitfield access);
|
||||
typedef GrGLvoid* (GR_GL_FUNCTION_TYPE* GrGLMapBufferSubDataProc)(GrGLuint target, GrGLintptr offset, GrGLsizeiptr size, GrGLenum access);
|
||||
typedef GrGLvoid* (GR_GL_FUNCTION_TYPE* GrGLMapTexSubImage2DProc)(GrGLenum target, GrGLint level, GrGLint xoffset, GrGLint yoffset, GrGLsizei width, GrGLsizei height, GrGLenum format, GrGLenum type, GrGLenum access);
|
||||
typedef GrGLvoid* (GR_GL_FUNCTION_TYPE* GrGLMemoryBarrierProc)(GrGLbitfield barriers);
|
||||
typedef GrGLvoid* (GR_GL_FUNCTION_TYPE* GrGLMemoryBarrierByRegionProc)(GrGLbitfield barriers);
|
||||
typedef GrGLvoid (GR_GL_FUNCTION_TYPE* GrGLPixelStoreiProc)(GrGLenum pname, GrGLint param);
|
||||
typedef GrGLvoid (GR_GL_FUNCTION_TYPE* GrGLPopGroupMarkerProc)();
|
||||
typedef GrGLvoid (GR_GL_FUNCTION_TYPE* GrGLPushGroupMarkerProc)(GrGLsizei length, const char* marker);
|
||||
|
@ -116,6 +116,7 @@ public:
|
||||
GrGLFunction<GrGLBindFramebufferProc> fBindFramebuffer;
|
||||
GrGLFunction<GrGLBindRenderbufferProc> fBindRenderbuffer;
|
||||
GrGLFunction<GrGLBindTextureProc> fBindTexture;
|
||||
GrGLFunction<GrGLBindImageTextureProc> fBindImageTexture;
|
||||
GrGLFunction<GrGLBindVertexArrayProc> fBindVertexArray;
|
||||
GrGLFunction<GrGLBlendBarrierProc> fBlendBarrier;
|
||||
GrGLFunction<GrGLBlendColorProc> fBlendColor;
|
||||
@ -207,6 +208,8 @@ public:
|
||||
GrGLFunction<GrGLMapBufferRangeProc> fMapBufferRange;
|
||||
GrGLFunction<GrGLMapBufferSubDataProc> fMapBufferSubData;
|
||||
GrGLFunction<GrGLMapTexSubImage2DProc> fMapTexSubImage2D;
|
||||
GrGLFunction<GrGLMemoryBarrierProc> fMemoryBarrier;
|
||||
GrGLFunction<GrGLMemoryBarrierByRegionProc> fMemoryBarrierByRegion;
|
||||
GrGLFunction<GrGLMultiDrawArraysIndirectProc> fMultiDrawArraysIndirect;
|
||||
GrGLFunction<GrGLMultiDrawElementsIndirectProc> fMultiDrawElementsIndirect;
|
||||
GrGLFunction<GrGLPixelStoreiProc> fPixelStorei;
|
||||
|
@ -532,6 +532,14 @@ const GrGLInterface* GrGLAssembleGLInterface(void* ctx, GrGLGetProc get) {
|
||||
GET_PROC(DeleteSync);
|
||||
}
|
||||
|
||||
if (glVer >= GR_GL_VER(4, 2) || extensions.has("GL_ARB_shader_image_load_store")) {
|
||||
GET_PROC(BindImageTexture);
|
||||
GET_PROC(MemoryBarrier);
|
||||
}
|
||||
if (glVer >= GR_GL_VER(4, 5) || extensions.has("GL_ARB_ES3_1_compatibility")) {
|
||||
GET_PROC(MemoryBarrierByRegion);
|
||||
}
|
||||
|
||||
interface->fStandard = kGL_GrGLStandard;
|
||||
interface->fExtensions.swap(&extensions);
|
||||
|
||||
@ -938,6 +946,12 @@ const GrGLInterface* GrGLAssembleGLESInterface(void* ctx, GrGLGetProc get) {
|
||||
GET_PROC(DeleteSync);
|
||||
}
|
||||
|
||||
if (version >= GR_GL_VER(3, 1)) {
|
||||
GET_PROC(BindImageTexture);
|
||||
GET_PROC(MemoryBarrier);
|
||||
GET_PROC(MemoryBarrierByRegion);
|
||||
}
|
||||
|
||||
interface->fStandard = kGLES_GrGLStandard;
|
||||
interface->fExtensions.swap(&extensions);
|
||||
|
||||
|
@ -242,6 +242,14 @@
|
||||
#define GR_GL_MULTISAMPLE_COVERAGE_MODES 0x8E12
|
||||
#define GR_GL_MAX_TEXTURE_BUFFER_SIZE 0x8C2B
|
||||
|
||||
#define GR_GL_MAX_IMAGE_UNITS 0x8F38
|
||||
#define GR_GL_MAX_COMBINED_IMAGE_UNITS_AND_FRAGMENT_OUTPUTS 0x8F39
|
||||
#define GR_GL_MAX_IMAGE_SAMPLES 0x906D
|
||||
#define GR_GL_MAX_VERTEX_IMAGE_UNIFORMS 0x90CA
|
||||
#define GR_GL_MAX_GEOMETRY_IMAGE_UNIFORMS 0x90CD
|
||||
#define GR_GL_MAX_FRAGMENT_IMAGE_UNIFORMS 0x90CE
|
||||
#define GR_GL_MAX_COMBINED_IMAGE_UNIFORMS 0x90CF
|
||||
|
||||
/* GetTextureParameter */
|
||||
/* GL_TEXTURE_MAG_FILTER */
|
||||
/* GL_TEXTURE_MIN_FILTER */
|
||||
@ -819,6 +827,7 @@
|
||||
/* Buffer Object */
|
||||
#define GR_GL_READ_ONLY 0x88B8
|
||||
#define GR_GL_WRITE_ONLY 0x88B9
|
||||
#define GR_GL_READ_WRITE 0x88BA
|
||||
#define GR_GL_BUFFER_MAPPED 0x88BC
|
||||
|
||||
#define GR_GL_MAP_READ_BIT 0x0001
|
||||
|
@ -830,5 +830,25 @@ bool GrGLInterface::validate() const {
|
||||
}
|
||||
}
|
||||
|
||||
if (kGL_GrGLStandard == fStandard) {
|
||||
if (glVer >= GR_GL_VER(4,2) || fExtensions.has("GL_ARB_shader_image_load_store")) {
|
||||
if (nullptr == fFunctions.fBindImageTexture ||
|
||||
nullptr == fFunctions.fMemoryBarrier) {
|
||||
RETURN_FALSE_INTERFACE;
|
||||
}
|
||||
}
|
||||
if (glVer >= GR_GL_VER(4,5) || fExtensions.has("GL_ARB_ES3_1_compatibility")) {
|
||||
if (nullptr == fFunctions.fMemoryBarrierByRegion) {
|
||||
RETURN_FALSE_INTERFACE;
|
||||
}
|
||||
}
|
||||
} else if (kGLES_GrGLStandard == fStandard && glVer >= GR_GL_VER(3,1)) {
|
||||
if (nullptr == fFunctions.fBindImageTexture ||
|
||||
nullptr == fFunctions.fMemoryBarrier ||
|
||||
nullptr == fFunctions.fMemoryBarrierByRegion) {
|
||||
RETURN_FALSE_INTERFACE;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user