[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