[Bf-blender-cvs] [1fcc5adc600] temp-vr-draw-thread: Merge branch 'soc-2019-openxr' into temp-vr-draw-thread

Julian Eisel noreply at git.blender.org
Wed Aug 7 13:32:43 CEST 2019


Commit: 1fcc5adc60097d1245ade154986bb67bf9cdb926
Author: Julian Eisel
Date:   Wed Aug 7 13:31:17 2019 +0200
Branches: temp-vr-draw-thread
https://developer.blender.org/rB1fcc5adc60097d1245ade154986bb67bf9cdb926

Merge branch 'soc-2019-openxr' into temp-vr-draw-thread

===================================================================



===================================================================

diff --cc source/blender/draw/intern/draw_armature.c
index 96592564632,865cfea14e3..bb3d3fb2bdb
--- a/source/blender/draw/intern/draw_armature.c
+++ b/source/blender/draw/intern/draw_armature.c
@@@ -830,19 -830,19 +830,19 @@@ static bool set_pchan_color(short colCo
        if ((constflag) && ((bcolor == NULL) || (bcolor->flag & TH_WIRECOLOR_CONSTCOLS))) {
          uchar cp[4];
          if (constflag & PCHAN_HAS_TARGET) {
-           rgba_char_args_set((char *)cp, 255, 150, 0, 255);
+           rgba_uchar_args_set(cp, 255, 150, 0, 255);
          }
          else if (constflag & PCHAN_HAS_IK) {
-           rgba_char_args_set((char *)cp, 255, 255, 0, 255);
+           rgba_uchar_args_set(cp, 255, 255, 0, 255);
          }
          else if (constflag & PCHAN_HAS_SPLINEIK) {
-           rgba_char_args_set((char *)cp, 200, 255, 0, 255);
+           rgba_uchar_args_set(cp, 200, 255, 0, 255);
          }
          else if (constflag & PCHAN_HAS_CONST) {
-           rgba_char_args_set((char *)cp, 0, 255, 120, 255);
+           rgba_uchar_args_set(cp, 0, 255, 120, 255);
          }
          else if (constflag) {
 -          UI_GetThemeColor4ubv(TH_BONE_POSE, cp);
 +          DRW_theme_color_get_4ubv(TH_BONE_POSE, cp);
          } /* PCHAN_HAS_ACTION */
  
          rgb_uchar_to_float(fcolor, cp);
diff --cc source/blender/windowmanager/intern/wm_draw.c
index 4024fc628f0,3951644ec81..c146097aeb0
--- a/source/blender/windowmanager/intern/wm_draw.c
+++ b/source/blender/windowmanager/intern/wm_draw.c
@@@ -752,27 -748,37 +752,26 @@@ static void wm_draw_window_onscreen(bCo
    }
  }
  
- void wm_draw_upside_down(int sizex, int sizey)
+ void wm_draw_upside_down(int sizex, int sizey, bool to_srgb)
  {
-   /* Don't use imm here, this is called from a separate thread with no imm available. */
 -  GPUVertFormat *format = immVertexFormat();
 -  uint texcoord = GPU_vertformat_attr_add(format, "texCoord", GPU_COMP_F32, 2, GPU_FETCH_FLOAT);
 -  uint pos = GPU_vertformat_attr_add(format, "pos", GPU_COMP_F32, 2, GPU_FETCH_FLOAT);
 -
 -  immBindBuiltinProgram(to_srgb ? GPU_SHADER_2D_IMAGE_LINEAR_TO_SRGB : GPU_SHADER_2D_IMAGE);
  
    /* wmOrtho for the screen has this same offset */
    const float halfx = GLA_PIXEL_OFS / sizex;
 -  const float halfy = GLA_PIXEL_OFS / sizex;
 -
 -  immUniform1i("image", 0); /* texture is already bound to GL_TEXTURE0 unit */
 -
 -  immBegin(GPU_PRIM_TRI_FAN, 4);
 -
 -  immAttr2f(texcoord, halfx, 1.0f + halfy);
 -  immVertex2f(pos, 0.0f, 0.0f);
 -
 -  immAttr2f(texcoord, 1.0f + halfx, 1.0f + halfy);
 -  immVertex2f(pos, sizex, 0.0f);
 +  const float halfy = GLA_PIXEL_OFS / sizey;
  
-   GPUShader *shader = GPU_shader_get_builtin_shader(GPU_SHADER_2D_IMAGE_RECT_COLOR);
 -  immAttr2f(texcoord, 1.0f + halfx, halfy);
 -  immVertex2f(pos, sizex, sizey);
 -
 -  immAttr2f(texcoord, halfx, halfy);
 -  immVertex2f(pos, 0.0f, sizey);
++  GPUShader *shader = GPU_shader_get_builtin_shader(to_srgb ? GPU_SHADER_2D_IMAGE_RECT_LINEAR_TO_SRGB : GPU_SHADER_2D_IMAGE_RECT_COLOR);
 +  GPU_shader_bind(shader);
  
 -  immEnd();
 +  glUniform1i(GPU_shader_get_uniform_ensure(shader, "image"), 0);
 +  glUniform4f(GPU_shader_get_uniform_ensure(shader, "rect_icon"),
 +              halfx,
 +              halfy,
 +              1.0f + halfx,
 +              1.0f + halfy);
 +  glUniform4f(GPU_shader_get_uniform_ensure(shader, "rect_geom"), 0, sizey, sizex, 0);
 +  glUniform4f(GPU_shader_get_builtin_uniform(shader, GPU_UNIFORM_COLOR), 1.0f, 1.0f, 1.0f, 1.0f);
  
 -  immUnbindProgram();
 +  GPU_draw_primitive(GPU_PRIM_TRI_STRIP, 4);
  }
  
  static void wm_draw_window_upside_down_onscreen(bContext *C, wmWindow *win)
diff --cc source/blender/windowmanager/intern/wm_xr.c
index 4d6dd80fb80,82d17b6cd6e..fbe6bf906d1
--- a/source/blender/windowmanager/intern/wm_xr.c
+++ b/source/blender/windowmanager/intern/wm_xr.c
@@@ -362,17 -341,11 +362,17 @@@ static GHOST_ContextHandle wm_xr_draw_v
    if (g_xr_surface->secondary_ghost_ctx &&
        GHOST_isUpsideDownContext(g_xr_surface->secondary_ghost_ctx)) {
      GPU_texture_bind(texture, 0);
-     wm_draw_upside_down(draw_view->width, draw_view->height);
+     wm_draw_upside_down(draw_view->width, draw_view->height, draw_view->expects_srgb_buffer);
      GPU_texture_unbind(texture);
    }
 +  else {
-     GPU_viewport_draw_to_screen(viewport, &rect);
++    GPU_viewport_draw_to_screen_ex(viewport, &rect, draw_view->expects_srgb_buffer);
 +  }
 +
    GPU_viewport_unbind(viewport);
  
 +  DRW_render_context_draw_end();
 +
    return g_xr_surface->ghost_ctx;
  }



More information about the Bf-blender-cvs mailing list