summaryrefslogtreecommitdiffstats
path: root/mojo/gpu
diff options
context:
space:
mode:
authorkkinnunen <kkinnunen@nvidia.com>2015-07-14 04:08:34 -0700
committerCommit bot <commit-bot@chromium.org>2015-07-14 11:09:10 +0000
commitb959a8467d84feb3431809fe4abafb9649c44b24 (patch)
treeef570319a26e2efb29bd1d6767a2f0ed1f3d73d0 /mojo/gpu
parenta39e79ebcde16f7604bf5de6bed0c665c8afe5b0 (diff)
downloadchromium_src-b959a8467d84feb3431809fe4abafb9649c44b24.zip
chromium_src-b959a8467d84feb3431809fe4abafb9649c44b24.tar.gz
chromium_src-b959a8467d84feb3431809fe4abafb9649c44b24.tar.bz2
command_buffer: Implement path rendering functions for CHROMIUM_path_rendering
Add support for path rendering functions with CHROMIUM_path_rendering in gpu command buffer. CHROMIUM_path_rendering pseudo extension will use NV_path_rendering (NVPR). After this patch, CHROMIUM_path_rendering is able to draw solid color paths. Adds following functions to the command buffer: glGenPathsCHROMIUM glDeletePathsCHROMIUM glIsPathCHROMIUM glPathCommandsCHROMIUM glPathParameterfCHROMIUM glPathParameteriCHROMIUM glPathStencilFuncCHROMIUM glStencilFillPathCHROMIUM glStencilStrokePathCHROMIUM glCoverFillPathCHROMIUM glCoverStrokePathCHROMIUM glStencilThenCoverFillPathCHROMIUM glStencilThenCoverStrokePathCHROMIUM Noteworthy items: NVPR has calls with multiple data arrays. These will be passed by memcpy:ing the arrays into the same transfer buffer. The arrays containing GLfloats are copied first, because floats have more strict alignment needs than whatever is in the other array. The functions exposed by the command buffer take in subset of the values that plain NVPR functions accept. Also some functions do not take exact same amount of parameters, rather only those parameters that are expected to vary based on Skia implementation. The change does not add vertexshader-less shader program support to the command buffer. The caller is expected to use a dummy vertex shader. NVPR calls will ignore the vertex shader. Adds gpu::gles2::PathManager class that should be similar to other resource manager classes. The intention is that paths can be shared in similar manner as other resources. Changes generator to generate feature_info check for Is -type of functions. Moves the path matrix related constants from glchromium.h to gl2extchromium.h, the constants are not "normal" GLES constants, rather they are part of the extension. Skia will not yet use the extension, because texturing support and instanced variants of the draw functions are not exposed by CHROMIUM_path_rendering. The extension will be available through flag --enable-gl-path-rendering BUG=344330 Review URL: https://codereview.chromium.org/169403005 Cr-Commit-Position: refs/heads/master@{#338666}
Diffstat (limited to 'mojo/gpu')
-rw-r--r--mojo/gpu/mojo_gles2_impl_autogen.cc62
-rw-r--r--mojo/gpu/mojo_gles2_impl_autogen.h30
2 files changed, 92 insertions, 0 deletions
diff --git a/mojo/gpu/mojo_gles2_impl_autogen.cc b/mojo/gpu/mojo_gles2_impl_autogen.cc
index 8b068c7..6351a07 100644
--- a/mojo/gpu/mojo_gles2_impl_autogen.cc
+++ b/mojo/gpu/mojo_gles2_impl_autogen.cc
@@ -1644,6 +1644,68 @@ void MojoGLES2Impl::MatrixLoadfCHROMIUM(GLenum matrixMode, const GLfloat* m) {
void MojoGLES2Impl::MatrixLoadIdentityCHROMIUM(GLenum matrixMode) {
NOTREACHED() << "Unimplemented MatrixLoadIdentityCHROMIUM.";
}
+GLuint MojoGLES2Impl::GenPathsCHROMIUM(GLsizei range) {
+ NOTREACHED() << "Unimplemented GenPathsCHROMIUM.";
+ return 0;
+}
+void MojoGLES2Impl::DeletePathsCHROMIUM(GLuint path, GLsizei range) {
+ NOTREACHED() << "Unimplemented DeletePathsCHROMIUM.";
+}
+GLboolean MojoGLES2Impl::IsPathCHROMIUM(GLuint path) {
+ NOTREACHED() << "Unimplemented IsPathCHROMIUM.";
+ return 0;
+}
+void MojoGLES2Impl::PathCommandsCHROMIUM(GLuint path,
+ GLsizei numCommands,
+ const GLubyte* commands,
+ GLsizei numCoords,
+ GLenum coordType,
+ const GLvoid* coords) {
+ NOTREACHED() << "Unimplemented PathCommandsCHROMIUM.";
+}
+void MojoGLES2Impl::PathParameterfCHROMIUM(GLuint path,
+ GLenum pname,
+ GLfloat value) {
+ NOTREACHED() << "Unimplemented PathParameterfCHROMIUM.";
+}
+void MojoGLES2Impl::PathParameteriCHROMIUM(GLuint path,
+ GLenum pname,
+ GLint value) {
+ NOTREACHED() << "Unimplemented PathParameteriCHROMIUM.";
+}
+void MojoGLES2Impl::PathStencilFuncCHROMIUM(GLenum func,
+ GLint ref,
+ GLuint mask) {
+ NOTREACHED() << "Unimplemented PathStencilFuncCHROMIUM.";
+}
+void MojoGLES2Impl::StencilFillPathCHROMIUM(GLuint path,
+ GLenum fillMode,
+ GLuint mask) {
+ NOTREACHED() << "Unimplemented StencilFillPathCHROMIUM.";
+}
+void MojoGLES2Impl::StencilStrokePathCHROMIUM(GLuint path,
+ GLint reference,
+ GLuint mask) {
+ NOTREACHED() << "Unimplemented StencilStrokePathCHROMIUM.";
+}
+void MojoGLES2Impl::CoverFillPathCHROMIUM(GLuint path, GLenum coverMode) {
+ NOTREACHED() << "Unimplemented CoverFillPathCHROMIUM.";
+}
+void MojoGLES2Impl::CoverStrokePathCHROMIUM(GLuint path, GLenum coverMode) {
+ NOTREACHED() << "Unimplemented CoverStrokePathCHROMIUM.";
+}
+void MojoGLES2Impl::StencilThenCoverFillPathCHROMIUM(GLuint path,
+ GLenum fillMode,
+ GLuint mask,
+ GLenum coverMode) {
+ NOTREACHED() << "Unimplemented StencilThenCoverFillPathCHROMIUM.";
+}
+void MojoGLES2Impl::StencilThenCoverStrokePathCHROMIUM(GLuint path,
+ GLint reference,
+ GLuint mask,
+ GLenum coverMode) {
+ NOTREACHED() << "Unimplemented StencilThenCoverStrokePathCHROMIUM.";
+}
GLenum MojoGLES2Impl::GetGraphicsResetStatusKHR() {
NOTREACHED() << "Unimplemented GetGraphicsResetStatusKHR.";
return 0;
diff --git a/mojo/gpu/mojo_gles2_impl_autogen.h b/mojo/gpu/mojo_gles2_impl_autogen.h
index 32d9e2a..c71536c 100644
--- a/mojo/gpu/mojo_gles2_impl_autogen.h
+++ b/mojo/gpu/mojo_gles2_impl_autogen.h
@@ -786,6 +786,36 @@ class MojoGLES2Impl : public gpu::gles2::GLES2Interface {
void SwapInterval(GLint interval) override;
void MatrixLoadfCHROMIUM(GLenum matrixMode, const GLfloat* m) override;
void MatrixLoadIdentityCHROMIUM(GLenum matrixMode) override;
+ GLuint GenPathsCHROMIUM(GLsizei range) override;
+ void DeletePathsCHROMIUM(GLuint path, GLsizei range) override;
+ GLboolean IsPathCHROMIUM(GLuint path) override;
+ void PathCommandsCHROMIUM(GLuint path,
+ GLsizei numCommands,
+ const GLubyte* commands,
+ GLsizei numCoords,
+ GLenum coordType,
+ const GLvoid* coords) override;
+ void PathParameterfCHROMIUM(GLuint path,
+ GLenum pname,
+ GLfloat value) override;
+ void PathParameteriCHROMIUM(GLuint path, GLenum pname, GLint value) override;
+ void PathStencilFuncCHROMIUM(GLenum func, GLint ref, GLuint mask) override;
+ void StencilFillPathCHROMIUM(GLuint path,
+ GLenum fillMode,
+ GLuint mask) override;
+ void StencilStrokePathCHROMIUM(GLuint path,
+ GLint reference,
+ GLuint mask) override;
+ void CoverFillPathCHROMIUM(GLuint path, GLenum coverMode) override;
+ void CoverStrokePathCHROMIUM(GLuint path, GLenum coverMode) override;
+ void StencilThenCoverFillPathCHROMIUM(GLuint path,
+ GLenum fillMode,
+ GLuint mask,
+ GLenum coverMode) override;
+ void StencilThenCoverStrokePathCHROMIUM(GLuint path,
+ GLint reference,
+ GLuint mask,
+ GLenum coverMode) override;
GLenum GetGraphicsResetStatusKHR() override;
void BlendBarrierKHR() override;