-// SwiftShader Software Renderer\r
+// SwiftShader Software Renderer\r
//\r
// Copyright(c) 2005-2013 TransGaming Inc.\r
//\r
mState.sampleCoverageInvert = false;\r
mState.scissorTest = false;\r
mState.dither = true;\r
+ mState.primitiveRestartFixedIndex = false;\r
+ mState.rasterizerDiscard = false;\r
mState.generateMipmapHint = GL_DONT_CARE;\r
mState.fragmentShaderDerivativeHint = GL_DONT_CARE;\r
\r
return mState.dither;\r
}\r
\r
+void Context::setPrimitiveRestartFixedIndex(bool enabled)\r
+{\r
+ UNIMPLEMENTED();\r
+ mState.primitiveRestartFixedIndex = enabled;\r
+}\r
+\r
+bool Context::isPrimitiveRestartFixedIndexEnabled() const\r
+{\r
+ return mState.primitiveRestartFixedIndex;\r
+}\r
+\r
+void Context::setRasterizerDiscard(bool enabled)\r
+{\r
+ UNIMPLEMENTED();\r
+ mState.rasterizerDiscard = enabled;\r
+}\r
+\r
+bool Context::isRasterizerDiscardEnabled() const\r
+{\r
+ return mState.rasterizerDiscard;\r
+}\r
+\r
void Context::setLineWidth(GLfloat width)\r
{\r
mState.lineWidth = width;\r
case GL_DEPTH_TEST: *params = mState.depthTest; break;\r
case GL_BLEND: *params = mState.blend; break;\r
case GL_DITHER: *params = mState.dither; break;\r
+ case GL_PRIMITIVE_RESTART_FIXED_INDEX: *params = mState.primitiveRestartFixedIndex; break;\r
+ case GL_RASTERIZER_DISCARD: *params = mState.rasterizerDiscard; break;\r
default:\r
return false;\r
}\r
}\r
break;\r
case GL_TEXTURE_BINDING_3D_OES:\r
- {\r
+ case GL_TEXTURE_BINDING_2D_ARRAY: // GLES 3.0\r
+ {\r
if(mState.activeSampler < 0 || mState.activeSampler > MAX_COMBINED_TEXTURE_IMAGE_UNITS - 1)\r
{\r
error(GL_INVALID_OPERATION);\r
}\r
\r
*params = mState.samplerTexture[TEXTURE_3D][mState.activeSampler].name();\r
- }\r
+ }\r
+ break;\r
+ case GL_COPY_READ_BUFFER_BINDING: // name, initially 0\r
+ UNIMPLEMENTED();\r
+ *params = 0;\r
+ break;\r
+ case GL_COPY_WRITE_BUFFER_BINDING: // name, initially 0\r
+ UNIMPLEMENTED();\r
+ *params = 0;\r
+ break;\r
+ case GL_DRAW_BUFFER0: // symbolic constant, initial value is GL_BACK\r
+ UNIMPLEMENTED();\r
+ *params = GL_BACK;\r
+ break;\r
+ case GL_DRAW_BUFFER1: // symbolic constant, initial value is GL_NONE
+ case GL_DRAW_BUFFER2:
+ case GL_DRAW_BUFFER3:
+ case GL_DRAW_BUFFER4:
+ case GL_DRAW_BUFFER5:
+ case GL_DRAW_BUFFER6:
+ case GL_DRAW_BUFFER7:
+ case GL_DRAW_BUFFER8:
+ case GL_DRAW_BUFFER9:
+ case GL_DRAW_BUFFER10:
+ case GL_DRAW_BUFFER11:
+ case GL_DRAW_BUFFER12:
+ case GL_DRAW_BUFFER13:
+ case GL_DRAW_BUFFER14:\r
+ case GL_DRAW_BUFFER15:\r
+ UNIMPLEMENTED();\r
+ *params = GL_NONE;\r
+ break;\r
+ case GL_MAJOR_VERSION: // integer, at least 3\r
+ UNIMPLEMENTED();\r
+ *params = 3;\r
+ break;\r
+ case GL_MAX_3D_TEXTURE_SIZE: // GLint, at least 2048\r
+ UNIMPLEMENTED();\r
+ *params = 2048;\r
+ break;\r
+ case GL_MAX_ARRAY_TEXTURE_LAYERS: // GLint, at least 2048\r
+ UNIMPLEMENTED();\r
+ *params = 2048;\r
+ break;\r
+ case GL_MAX_COLOR_ATTACHMENTS: // integer, at least 8\r
+ UNIMPLEMENTED();\r
+ *params = 8;\r
+ break;\r
+ case GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS: // integer, at least 1\r
+ UNIMPLEMENTED();\r
+ *params = 1;\r
+ break;\r
+ case GL_MAX_COMBINED_UNIFORM_BLOCKS: // integer, at least 70\r
+ UNIMPLEMENTED();\r
+ *params = 70;\r
+ break;\r
+ case GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS: // integer, at least 1\r
+ UNIMPLEMENTED();\r
+ *params = 1;\r
+ break;\r
+ case GL_MAX_DRAW_BUFFERS: // integer, at least 8\r
+ UNIMPLEMENTED();\r
+ *params = 8;\r
+ break;\r
+ case GL_MAX_ELEMENT_INDEX: // integer, at least 16777215\r
+ UNIMPLEMENTED();\r
+ *params = 16777215;\r
+ break;\r
+ case GL_MAX_ELEMENTS_INDICES: // integer\r
+ UNIMPLEMENTED();\r
+ *params = 0;\r
+ break;\r
+ case GL_MAX_ELEMENTS_VERTICES: // integer\r
+ UNIMPLEMENTED();\r
+ *params = 0;\r
+ break;\r
+ case GL_MAX_FRAGMENT_INPUT_COMPONENTS: // integer, at least 128\r
+ UNIMPLEMENTED();\r
+ *params = 128;\r
+ break;\r
+ case GL_MAX_FRAGMENT_UNIFORM_BLOCKS: // integer, at least 12\r
+ UNIMPLEMENTED();\r
+ *params = 12;\r
+ break;\r
+ case GL_MAX_FRAGMENT_UNIFORM_COMPONENTS: // integer, at least 1024\r
+ UNIMPLEMENTED();\r
+ *params = 1024;\r
+ break;\r
+ case GL_MAX_PROGRAM_TEXEL_OFFSET: // integer, minimum is 7\r
+ UNIMPLEMENTED();\r
+ *params = 7;\r
+ break;\r
+ case GL_MAX_SERVER_WAIT_TIMEOUT: // integer\r
+ UNIMPLEMENTED();\r
+ *params = 0;\r
+ break;\r
+ case GL_MAX_TEXTURE_LOD_BIAS: // integer, at least 2.0\r
+ UNIMPLEMENTED();\r
+ *params = 2;\r
+ break;\r
+ case GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS: // integer, at least 64\r
+ UNIMPLEMENTED();\r
+ *params = 64;\r
+ break;\r
+ case GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS: // integer, at least 4\r
+ UNIMPLEMENTED();\r
+ *params = 4;\r
+ break;\r
+ case GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS: // integer, at least 4\r
+ UNIMPLEMENTED();\r
+ *params = 4;\r
+ break;\r
+ case GL_MAX_UNIFORM_BLOCK_SIZE: // integer, at least 16384\r
+ UNIMPLEMENTED();\r
+ *params = 16384;\r
+ break;\r
+ case GL_MAX_UNIFORM_BUFFER_BINDINGS: // integer, at least 36\r
+ UNIMPLEMENTED();\r
+ *params = 36;\r
+ break;\r
+ case GL_MAX_VARYING_COMPONENTS: // integer, at least 60\r
+ UNIMPLEMENTED();\r
+ *params = 60;\r
+ break;\r
+ case GL_MAX_VERTEX_OUTPUT_COMPONENTS: // integer, at least 64\r
+ UNIMPLEMENTED();\r
+ *params = 64;\r
+ break;\r
+ case GL_MAX_VERTEX_UNIFORM_BLOCKS: // integer, at least 12\r
+ UNIMPLEMENTED();\r
+ *params = 12;\r
+ break;\r
+ case GL_MAX_VERTEX_UNIFORM_COMPONENTS: // integer, at least 1024\r
+ UNIMPLEMENTED();\r
+ *params = 1024;\r
+ break;\r
+ case GL_MIN_PROGRAM_TEXEL_OFFSET: // integer, maximum is -8\r
+ UNIMPLEMENTED();\r
+ *params = -8;\r
+ break;\r
+ case GL_MINOR_VERSION: // integer\r
+ UNIMPLEMENTED();\r
+ *params = 0;\r
+ break;\r
+ case GL_NUM_EXTENSIONS: // integer\r
+ UNIMPLEMENTED();\r
+ *params = 0;\r
+ break;\r
+ case GL_NUM_PROGRAM_BINARY_FORMATS: // integer, at least 0\r
+ UNIMPLEMENTED();\r
+ *params = 0;\r
+ break;\r
+ case GL_PACK_ROW_LENGTH: // integer, initially 0\r
+ UNIMPLEMENTED();\r
+ *params = 0;\r
+ break;\r
+ case GL_PACK_SKIP_PIXELS: // integer, initially 0\r
+ UNIMPLEMENTED();\r
+ *params = 0;\r
+ break;\r
+ case GL_PACK_SKIP_ROWS: // integer, initially 0\r
+ UNIMPLEMENTED();\r
+ *params = 0;\r
+ break;\r
+ case GL_PIXEL_PACK_BUFFER_BINDING: // integer, initially 0\r
+ UNIMPLEMENTED();\r
+ *params = 0;\r
+ break;\r
+ case GL_PIXEL_UNPACK_BUFFER_BINDING: // integer, initially 0\r
+ UNIMPLEMENTED();\r
+ *params = 0;\r
+ break;\r
+ case GL_PROGRAM_BINARY_FORMATS: // integer[GL_NUM_PROGRAM_BINARY_FORMATS]\r
+ UNIMPLEMENTED();\r
+ *params = 0;\r
+ break;\r
+ case GL_READ_BUFFER: // symbolic constant, initial value is GL_BACK\r
+ UNIMPLEMENTED();\r
+ *params = GL_BACK;\r
+ break;\r
+ case GL_SAMPLER_BINDING: // GLint, default 0\r
+ UNIMPLEMENTED();\r
+ *params = 0;\r
+ break;\r
+ case GL_UNIFORM_BUFFER_BINDING: // name, initially 0\r
+ UNIMPLEMENTED();\r
+ *params = 0;\r
+ break;\r
+ case GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT: // integer, defaults to 1\r
+ UNIMPLEMENTED();\r
+ *params = 1;\r
+ break;\r
+ case GL_UNIFORM_BUFFER_SIZE: // indexed[n] 64-bit integer, initially 0\r
+ UNIMPLEMENTED();\r
+ *params = 0;\r
+ break;\r
+ case GL_UNIFORM_BUFFER_START: // indexed[n] 64-bit integer, initially 0\r
+ UNIMPLEMENTED();\r
+ *params = 0;\r
+ break;\r
+ case GL_UNPACK_IMAGE_HEIGHT: // integer, initially 0\r
+ UNIMPLEMENTED();\r
+ *params = 0;\r
+ break;\r
+ case GL_UNPACK_ROW_LENGTH: // integer, initially 0\r
+ UNIMPLEMENTED();\r
+ *params = 0;\r
+ break;\r
+ case GL_UNPACK_SKIP_IMAGES: // integer, initially 0\r
+ UNIMPLEMENTED();\r
+ *params = 0;\r
+ break;\r
+ case GL_UNPACK_SKIP_PIXELS: // integer, initially 0\r
+ UNIMPLEMENTED();\r
+ *params = 0;\r
+ break;\r
+ case GL_UNPACK_SKIP_ROWS: // integer, initially 0\r
+ UNIMPLEMENTED();\r
+ *params = 0;\r
+ break;\r
+ case GL_VERTEX_ARRAY_BINDING: // GLint, initially 0\r
+ UNIMPLEMENTED();\r
+ *params = 0;\r
break;\r
default:\r
return false;\r
return true;\r
}\r
\r
+bool Context::getTransformFeedbackiv(GLuint xfb, GLenum pname, GLint *param)\r
+{\r
+ UNIMPLEMENTED();\r
+\r
+ switch(pname)\r
+ {\r
+ case GL_TRANSFORM_FEEDBACK_BINDING: // GLint, initially 0\r
+ *param = 0;\r
+ break;\r
+ case GL_TRANSFORM_FEEDBACK_ACTIVE: // boolean, initially GL_FALSE\r
+ *param = GL_FALSE;\r
+ break;\r
+ case GL_TRANSFORM_FEEDBACK_BUFFER_BINDING: // name, initially 0\r
+ *param = 0;\r
+ break;\r
+ case GL_TRANSFORM_FEEDBACK_PAUSED: // boolean, initially GL_FALSE\r
+ *param = GL_FALSE;\r
+ break;\r
+ case GL_TRANSFORM_FEEDBACK_BUFFER_SIZE: // indexed[n] 64-bit integer, initially 0\r
+ *param = 0;\r
+ break;\r
+ case GL_TRANSFORM_FEEDBACK_BUFFER_START: // indexed[n] 64-bit integer, initially 0\r
+ *param = 0;\r
+ break;\r
+ default:\r
+ return false;\r
+ }\r
+\r
+ return true;\r
+}\r
+\r
bool Context::getQueryParameterInfo(GLenum pname, GLenum *type, unsigned int *numParams)\r
{\r
// Please note: the query type returned for DEPTH_CLEAR_VALUE in this implementation\r
case GL_TEXTURE_BINDING_2D:\r
case GL_TEXTURE_BINDING_CUBE_MAP:\r
case GL_TEXTURE_BINDING_EXTERNAL_OES:\r
- case GL_TEXTURE_BINDING_3D_OES:\r
+ case GL_TEXTURE_BINDING_3D_OES:\r
+ case GL_COPY_READ_BUFFER_BINDING:\r
+ case GL_COPY_WRITE_BUFFER_BINDING:\r
+ case GL_DRAW_BUFFER0:
+ case GL_DRAW_BUFFER1:
+ case GL_DRAW_BUFFER2:
+ case GL_DRAW_BUFFER3:
+ case GL_DRAW_BUFFER4:
+ case GL_DRAW_BUFFER5:
+ case GL_DRAW_BUFFER6:
+ case GL_DRAW_BUFFER7:
+ case GL_DRAW_BUFFER8:
+ case GL_DRAW_BUFFER9:
+ case GL_DRAW_BUFFER10:
+ case GL_DRAW_BUFFER11:
+ case GL_DRAW_BUFFER12:
+ case GL_DRAW_BUFFER13:\r
+ case GL_DRAW_BUFFER14:\r
+ case GL_DRAW_BUFFER15:\r
+ case GL_MAJOR_VERSION:\r
+ case GL_MAX_3D_TEXTURE_SIZE:\r
+ case GL_MAX_ARRAY_TEXTURE_LAYERS:\r
+ case GL_MAX_COLOR_ATTACHMENTS:\r
+ case GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS:\r
+ case GL_MAX_COMBINED_UNIFORM_BLOCKS:\r
+ case GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS:\r
+ case GL_MAX_DRAW_BUFFERS:\r
+ case GL_MAX_ELEMENT_INDEX:\r
+ case GL_MAX_ELEMENTS_INDICES:\r
+ case GL_MAX_ELEMENTS_VERTICES:\r
+ case GL_MAX_FRAGMENT_INPUT_COMPONENTS:\r
+ case GL_MAX_FRAGMENT_UNIFORM_BLOCKS:\r
+ case GL_MAX_FRAGMENT_UNIFORM_COMPONENTS:\r
+ case GL_MAX_PROGRAM_TEXEL_OFFSET:\r
+ case GL_MAX_SERVER_WAIT_TIMEOUT:\r
+ case GL_MAX_TEXTURE_LOD_BIAS:\r
+ case GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS:\r
+ case GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS:\r
+ case GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS:\r
+ case GL_MAX_UNIFORM_BLOCK_SIZE:\r
+ case GL_MAX_UNIFORM_BUFFER_BINDINGS:\r
+ case GL_MAX_VARYING_COMPONENTS:\r
+ case GL_MAX_VERTEX_OUTPUT_COMPONENTS:\r
+ case GL_MAX_VERTEX_UNIFORM_BLOCKS:\r
+ case GL_MAX_VERTEX_UNIFORM_COMPONENTS:\r
+ case GL_MIN_PROGRAM_TEXEL_OFFSET:\r
+ case GL_MINOR_VERSION:\r
+ case GL_NUM_EXTENSIONS:\r
+ case GL_NUM_PROGRAM_BINARY_FORMATS:\r
+ case GL_PACK_ROW_LENGTH:\r
+ case GL_PACK_SKIP_PIXELS:\r
+ case GL_PACK_SKIP_ROWS:\r
+ case GL_PIXEL_PACK_BUFFER_BINDING:\r
+ case GL_PIXEL_UNPACK_BUFFER_BINDING:\r
+ case GL_PROGRAM_BINARY_FORMATS:\r
+ case GL_READ_BUFFER:\r
+ case GL_SAMPLER_BINDING:\r
+ case GL_TEXTURE_BINDING_2D_ARRAY:\r
+ case GL_UNIFORM_BUFFER_BINDING:\r
+ case GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT:\r
+ case GL_UNIFORM_BUFFER_SIZE:\r
+ case GL_UNIFORM_BUFFER_START:\r
+ case GL_UNPACK_IMAGE_HEIGHT:\r
+ case GL_UNPACK_ROW_LENGTH:\r
+ case GL_UNPACK_SKIP_IMAGES:\r
+ case GL_UNPACK_SKIP_PIXELS:\r
+ case GL_UNPACK_SKIP_ROWS:\r
+ case GL_VERTEX_ARRAY_BINDING:\r
{\r
*type = GL_INT;\r
*numParams = 1;\r
case GL_DEPTH_TEST:\r
case GL_BLEND:\r
case GL_DITHER:\r
+ case GL_PRIMITIVE_RESTART_FIXED_INDEX:\r
+ case GL_RASTERIZER_DISCARD:\r
{\r
*type = GL_BOOL;\r
*numParams = 1;\r
#define GL_APICALL\r
#include <GLES2/gl2.h>\r
#include <GLES2/gl2ext.h>\r
+#include <GLES3/gl3.h>\r
#define EGLAPI\r
#include <EGL/egl.h>\r
\r
GL_COMPRESSED_RGBA_S3TC_DXT3_ANGLE,\r
GL_COMPRESSED_RGBA_S3TC_DXT5_ANGLE,\r
#endif\r
+#if (GL_ES_VERSION_3_0)\r
+ GL_COMPRESSED_R11_EAC,
+ GL_COMPRESSED_SIGNED_R11_EAC,
+ GL_COMPRESSED_RG11_EAC,
+ GL_COMPRESSED_SIGNED_RG11_EAC,
+ GL_COMPRESSED_RGB8_ETC2,
+ GL_COMPRESSED_SRGB8_ETC2,
+ GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2,
+ GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2,
+ GL_COMPRESSED_RGBA8_ETC2_EAC,
+ GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC,\r
+#endif\r
};\r
\r
const GLint NUM_COMPRESSED_TEXTURE_FORMATS = sizeof(compressedTextureFormats) / sizeof(compressedTextureFormats[0]);\r
bool sampleCoverageInvert;\r
bool scissorTest;\r
bool dither;\r
+ bool primitiveRestartFixedIndex;\r
+ bool rasterizerDiscard;\r
\r
GLfloat lineWidth;\r
\r
void setDither(bool enabled);\r
bool isDitherEnabled() const;\r
\r
+ void setPrimitiveRestartFixedIndex(bool enabled);\r
+ bool isPrimitiveRestartFixedIndexEnabled() const;\r
+\r
+ void setRasterizerDiscard(bool enabled);\r
+ bool isRasterizerDiscardEnabled() const;\r
+\r
void setLineWidth(GLfloat width);\r
\r
void setGenerateMipmapHint(GLenum hint);\r
bool getFloatv(GLenum pname, GLfloat *params);\r
bool getIntegerv(GLenum pname, GLint *params);\r
bool getBooleanv(GLenum pname, GLboolean *params);\r
+ bool getTransformFeedbackiv(GLuint xfb, GLenum pname, GLint *param);\r
\r
bool getQueryParameterInfo(GLenum pname, GLenum *type, unsigned int *numParams);\r
\r