Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1563)

Unified Diff: gpu/command_buffer/service/context_state_impl_autogen.h

Issue 169603002: Add initial support for NV_path_rendering extension to gpu command buffer (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: address review comment Created 6 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « gpu/command_buffer/service/context_state_autogen.h ('k') | gpu/command_buffer/service/feature_info.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: gpu/command_buffer/service/context_state_impl_autogen.h
diff --git a/gpu/command_buffer/service/context_state_impl_autogen.h b/gpu/command_buffer/service/context_state_impl_autogen.h
index 056a382d24db13b6734dc6766778fb234aa5c886..1b1e5fe43015499a315fd3f16efb6294f66f4b78 100644
--- a/gpu/command_buffer/service/context_state_impl_autogen.h
+++ b/gpu/command_buffer/service/context_state_impl_autogen.h
@@ -68,6 +68,38 @@ void ContextState::Initialize() {
hint_generate_mipmap = GL_DONT_CARE;
hint_fragment_shader_derivative = GL_DONT_CARE;
line_width = 1.0f;
+ modelview_matrix[0] = 1.0f;
+ modelview_matrix[1] = 0.0f;
+ modelview_matrix[2] = 0.0f;
+ modelview_matrix[3] = 0.0f;
+ modelview_matrix[4] = 0.0f;
+ modelview_matrix[5] = 1.0f;
+ modelview_matrix[6] = 0.0f;
+ modelview_matrix[7] = 0.0f;
+ modelview_matrix[8] = 0.0f;
+ modelview_matrix[9] = 0.0f;
+ modelview_matrix[10] = 1.0f;
+ modelview_matrix[11] = 0.0f;
+ modelview_matrix[12] = 0.0f;
+ modelview_matrix[13] = 0.0f;
+ modelview_matrix[14] = 0.0f;
+ modelview_matrix[15] = 1.0f;
+ projection_matrix[0] = 1.0f;
+ projection_matrix[1] = 0.0f;
+ projection_matrix[2] = 0.0f;
+ projection_matrix[3] = 0.0f;
+ projection_matrix[4] = 0.0f;
+ projection_matrix[5] = 1.0f;
+ projection_matrix[6] = 0.0f;
+ projection_matrix[7] = 0.0f;
+ projection_matrix[8] = 0.0f;
+ projection_matrix[9] = 0.0f;
+ projection_matrix[10] = 1.0f;
+ projection_matrix[11] = 0.0f;
+ projection_matrix[12] = 0.0f;
+ projection_matrix[13] = 0.0f;
+ projection_matrix[14] = 0.0f;
+ projection_matrix[15] = 1.0f;
pack_alignment = 4;
unpack_alignment = 4;
polygon_offset_factor = 0.0f;
@@ -195,19 +227,38 @@ void ContextState::InitState(const ContextState* prev_state) const {
glDepthRange(z_near, z_far);
if ((front_face != prev_state->front_face))
glFrontFace(front_face);
- if (prev_state->hint_generate_mipmap != hint_generate_mipmap)
+ if (prev_state->hint_generate_mipmap != hint_generate_mipmap) {
glHint(GL_GENERATE_MIPMAP_HINT, hint_generate_mipmap);
- if (feature_info_->feature_flags().oes_standard_derivatives)
+ }
+ if (feature_info_->feature_flags().oes_standard_derivatives) {
if (prev_state->hint_fragment_shader_derivative !=
- hint_fragment_shader_derivative)
+ hint_fragment_shader_derivative) {
glHint(GL_FRAGMENT_SHADER_DERIVATIVE_HINT_OES,
hint_fragment_shader_derivative);
+ }
+ }
if ((line_width != prev_state->line_width))
glLineWidth(line_width);
- if (prev_state->pack_alignment != pack_alignment)
+ if (feature_info_->feature_flags().chromium_path_rendering) {
+ if (memcmp(prev_state->modelview_matrix,
+ modelview_matrix,
+ sizeof(GLfloat) * 16)) {
+ glMatrixLoadfEXT(GL_PATH_MODELVIEW_CHROMIUM, modelview_matrix);
+ }
+ }
+ if (feature_info_->feature_flags().chromium_path_rendering) {
+ if (memcmp(prev_state->projection_matrix,
+ projection_matrix,
+ sizeof(GLfloat) * 16)) {
+ glMatrixLoadfEXT(GL_PATH_PROJECTION_CHROMIUM, projection_matrix);
+ }
+ }
+ if (prev_state->pack_alignment != pack_alignment) {
glPixelStorei(GL_PACK_ALIGNMENT, pack_alignment);
- if (prev_state->unpack_alignment != unpack_alignment)
+ }
+ if (prev_state->unpack_alignment != unpack_alignment) {
glPixelStorei(GL_UNPACK_ALIGNMENT, unpack_alignment);
+ }
if ((polygon_offset_factor != prev_state->polygon_offset_factor) ||
(polygon_offset_units != prev_state->polygon_offset_units))
glPolygonOffset(polygon_offset_factor, polygon_offset_units);
@@ -278,10 +329,17 @@ void ContextState::InitState(const ContextState* prev_state) const {
glDepthRange(z_near, z_far);
glFrontFace(front_face);
glHint(GL_GENERATE_MIPMAP_HINT, hint_generate_mipmap);
- if (feature_info_->feature_flags().oes_standard_derivatives)
+ if (feature_info_->feature_flags().oes_standard_derivatives) {
glHint(GL_FRAGMENT_SHADER_DERIVATIVE_HINT_OES,
hint_fragment_shader_derivative);
+ }
glLineWidth(line_width);
+ if (feature_info_->feature_flags().chromium_path_rendering) {
+ glMatrixLoadfEXT(GL_PATH_MODELVIEW_CHROMIUM, modelview_matrix);
+ }
+ if (feature_info_->feature_flags().chromium_path_rendering) {
+ glMatrixLoadfEXT(GL_PATH_PROJECTION_CHROMIUM, projection_matrix);
+ }
glPixelStorei(GL_PACK_ALIGNMENT, pack_alignment);
glPixelStorei(GL_UNPACK_ALIGNMENT, unpack_alignment);
glPolygonOffset(polygon_offset_factor, polygon_offset_units);
@@ -458,6 +516,22 @@ bool ContextState::GetStateAsGLint(GLenum pname,
params[0] = static_cast<GLint>(line_width);
}
return true;
+ case GL_PATH_MODELVIEW_MATRIX_CHROMIUM:
+ *num_written = 16;
+ if (params) {
+ for (size_t i = 0; i < 16; ++i) {
+ params[i] = static_cast<GLint>(round(modelview_matrix[i]));
+ }
+ }
+ return true;
+ case GL_PATH_PROJECTION_MATRIX_CHROMIUM:
+ *num_written = 16;
+ if (params) {
+ for (size_t i = 0; i < 16; ++i) {
+ params[i] = static_cast<GLint>(round(projection_matrix[i]));
+ }
+ }
+ return true;
case GL_PACK_ALIGNMENT:
*num_written = 1;
if (params) {
@@ -473,13 +547,13 @@ bool ContextState::GetStateAsGLint(GLenum pname,
case GL_POLYGON_OFFSET_FACTOR:
*num_written = 1;
if (params) {
- params[0] = static_cast<GLint>(polygon_offset_factor);
+ params[0] = static_cast<GLint>(round(polygon_offset_factor));
}
return true;
case GL_POLYGON_OFFSET_UNITS:
*num_written = 1;
if (params) {
- params[0] = static_cast<GLint>(polygon_offset_units);
+ params[0] = static_cast<GLint>(round(polygon_offset_units));
}
return true;
case GL_SAMPLE_COVERAGE_VALUE:
@@ -783,6 +857,18 @@ bool ContextState::GetStateAsGLfloat(GLenum pname,
params[0] = static_cast<GLfloat>(line_width);
}
return true;
+ case GL_PATH_MODELVIEW_MATRIX_CHROMIUM:
+ *num_written = 16;
+ if (params) {
+ memcpy(params, modelview_matrix, sizeof(GLfloat) * 16);
+ }
+ return true;
+ case GL_PATH_PROJECTION_MATRIX_CHROMIUM:
+ *num_written = 16;
+ if (params) {
+ memcpy(params, projection_matrix, sizeof(GLfloat) * 16);
+ }
+ return true;
case GL_PACK_ALIGNMENT:
*num_written = 1;
if (params) {
« no previous file with comments | « gpu/command_buffer/service/context_state_autogen.h ('k') | gpu/command_buffer/service/feature_info.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698