VirtualBox

Ignore:
Timestamp:
Oct 27, 2011 4:36:48 PM (13 years ago)
Author:
vboxsync
Message:

wddm: fix image inversion on Mac; debugging stuff

Location:
trunk/src/VBox/Additions/WINNT/Graphics/Wine
Files:
2 added
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Additions/WINNT/Graphics/Wine/Makefile.kmk

    r38156 r39130  
    188188wined3dwddm_DEFS           = $(subst __i386__,,$(wined3d_DEFS)) VBOX_WITH_WDDM VBOX_WINE_WITHOUT_LIBWINE
    189189wined3dwddm_DEFS.x86       = $(NO_SUCH_VARIABLE)
    190 wined3dwddm_SOURCES        = $(subst wined3d.def,wined3dwddm.def,$(wined3d_SOURCES)) vbox/libWineStub/debug.c wined3d/vboxext.c
     190wined3dwddm_SOURCES        = $(subst wined3d.def,wined3dwddm.def,$(wined3d_SOURCES)) vbox/libWineStub/debug.c wined3d/vboxext.c vbox/VBoxDbgGl.c
    191191wined3dwddm_SOURCES.x86    = $(NO_SUCH_VARIABLE)
    192192wined3dwddm_SOURCES.amd64  = $(NO_SUCH_VARIABLE)
  • trunk/src/VBox/Additions/WINNT/Graphics/Wine/wined3d/context.c

    r39016 r39130  
    25582558
    25592559        case CTXUSAGE_BLIT:
     2560        case CTXUSAGE_BLIT_LIGHT:
    25602561            if (wined3d_settings.offscreen_rendering_mode == ORM_FBO) {
    25612562                if (!context->render_offscreen) context_validate_onscreen_formats(device, context);
     
    25912592    switch(usage) {
    25922593        case CTXUSAGE_RESOURCELOAD:
     2594        case CTXUSAGE_BLIT_LIGHT:
    25932595            /* This does not require any special states to be set up */
    25942596            break;
  • trunk/src/VBox/Additions/WINNT/Graphics/Wine/wined3d/drawprim.c

    r33656 r39130  
    3737#include "wined3d_private.h"
    3838
     39#if defined(VBOX_WITH_WDDM)
     40#include "../VBox/VBoxDbgGl.h"
     41#endif
     42
    3943WINE_DEFAULT_DEBUG_CHANNEL(d3d_draw);
    4044#define GLINFO_LOCATION This->adapter->gl_info
     
    614618        return;
    615619    }
     620
     621#if defined(VBOX_WITH_WDDM)
     622    DBGL_CHECK_DRAWPRIM(context->gl_info, This);
     623#endif
    616624
    617625    if (This->stencilBufferTarget) {
  • trunk/src/VBox/Additions/WINNT/Graphics/Wine/wined3d/glsl_shader.c

    r38982 r39130  
    284284}
    285285
     286static void shader_glsl_dump_shader_source(const struct wined3d_gl_info *gl_info, GLhandleARB shader)
     287{
     288    char *ptr;
     289    GLint tmp, source_size;
     290    char *source = NULL;
     291
     292    GL_EXTCALL(glGetObjectParameterivARB(shader, GL_OBJECT_SHADER_SOURCE_LENGTH_ARB, &tmp));
     293
     294    source = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, tmp);
     295    if (!source)
     296    {
     297        ERR("Failed to allocate %d bytes for shader source.\n", tmp);
     298        return;
     299    }
     300
     301    source_size = tmp;
     302
     303    WDLOG(("Object %u:\n", shader));
     304    GL_EXTCALL(glGetObjectParameterivARB(shader, GL_OBJECT_SUBTYPE_ARB, &tmp));
     305    WDLOG(("    GL_OBJECT_SUBTYPE_ARB: %s.\n", debug_gl_shader_type(tmp)));
     306    GL_EXTCALL(glGetObjectParameterivARB(shader, GL_OBJECT_COMPILE_STATUS_ARB, &tmp));
     307    WDLOG(("    GL_OBJECT_COMPILE_STATUS_ARB: %d.\n", tmp));
     308    WDLOG(("\n"));
     309
     310    ptr = source;
     311    GL_EXTCALL(glGetShaderSourceARB(shader, source_size, NULL, source));
     312#if 0
     313    while ((line = get_info_log_line(&ptr))) WDLOG(("    %s\n", line));
     314#else
     315    WDLOG(("*****shader source***\n"));
     316    WDLOG(("    %s\n", source));
     317    WDLOG(("\n*****END shader source***\n\n"));
     318#endif
     319    WDLOG(("\n"));
     320}
     321
    286322/* GL locking is done by the caller. */
    287323static void shader_glsl_dump_program_source(const struct wined3d_gl_info *gl_info, GLhandleARB program)
     
    291327    char *source = NULL;
    292328
     329    WDLOG(("\n***************************dumping program %d******************************\n", program));
     330
    293331    GL_EXTCALL(glGetObjectParameterivARB(program, GL_OBJECT_ATTACHED_OBJECTS_ARB, &object_count));
    294332    objects = HeapAlloc(GetProcessHeap(), 0, object_count * sizeof(*objects));
     
    302340    for (i = 0; i < object_count; ++i)
    303341    {
    304         char *ptr, *line;
    305         GLint tmp;
    306 
    307         GL_EXTCALL(glGetObjectParameterivARB(objects[i], GL_OBJECT_SHADER_SOURCE_LENGTH_ARB, &tmp));
    308 
    309         if (!source || source_size < tmp)
    310         {
    311             HeapFree(GetProcessHeap(), 0, source);
    312 
    313             source = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, tmp);
    314             if (!source)
    315             {
    316                 ERR("Failed to allocate %d bytes for shader source.\n", tmp);
    317                 HeapFree(GetProcessHeap(), 0, objects);
    318                 return;
    319             }
    320             source_size = tmp;
    321         }
    322 
    323         WDLOG(("Object %u:\n", objects[i]));
    324         GL_EXTCALL(glGetObjectParameterivARB(objects[i], GL_OBJECT_SUBTYPE_ARB, &tmp));
    325         WDLOG(("    GL_OBJECT_SUBTYPE_ARB: %s.\n", debug_gl_shader_type(tmp)));
    326         GL_EXTCALL(glGetObjectParameterivARB(objects[i], GL_OBJECT_COMPILE_STATUS_ARB, &tmp));
    327         WDLOG(("    GL_OBJECT_COMPILE_STATUS_ARB: %d.\n", tmp));
    328         WDLOG(("\n"));
    329 
    330         ptr = source;
    331         GL_EXTCALL(glGetShaderSourceARB(objects[i], source_size, NULL, source));
    332         while ((line = get_info_log_line(&ptr))) WDLOG(("    %s\n", line));
    333         WDLOG(("\n"));
     342        shader_glsl_dump_shader_source(gl_info, objects[i]);
    334343    }
    335344
    336345    HeapFree(GetProcessHeap(), 0, source);
    337346    HeapFree(GetProcessHeap(), 0, objects);
     347
     348    WDLOG(("\n***************************END dumping program %d******************************\n\n", program));
    338349}
    339350
     
    358369        {
    359370            ERR("Program %u link status invalid.\n", program);
     371#ifndef VBOXWINEDBG_SHADERS
    360372            shader_glsl_dump_program_source(gl_info, program);
    361         }
     373#endif
     374        }
     375#ifdef VBOXWINEDBG_SHADERS
     376        shader_glsl_dump_program_source(gl_info, program);
     377#endif
    362378    }
    363379    else if (tmp == GL_SHADER_OBJECT_ARB)
     
    372388        {
    373389            ERR("Shader %u compile status invalid.\n", program);
    374             shader_glsl_dump_program_source(gl_info, program);
     390            shader_glsl_dump_shader_source(gl_info, program);
    375391        }
    376392    }
     
    31043120    {
    31053121        FIXME("texldd used, but not supported by hardware. Falling back to regular tex\n");
    3106         return shader_glsl_tex(ins);
     3122        shader_glsl_tex(ins);
     3123        return;
    31073124    }
    31083125
  • trunk/src/VBox/Additions/WINNT/Graphics/Wine/wined3d/surface.c

    r39048 r39130  
    32473247}
    32483248
    3249 #ifdef VBOX_WITH_WDDM
    3250 # define VBOX_WINE_TEXDIRECT_USE_RESOURCELOAD
    3251 #endif
    32523249/* Does a direct frame buffer -> texture copy. Stretching is done
    32533250 * with single pixel copy calls
     
    33093306    }
    33103307
    3311 #ifdef VBOX_WINE_TEXDIRECT_USE_RESOURCELOAD
    3312     if (isSrcOffscreen) context = context_acquire(myDevice, SrcSurface, CTXUSAGE_RESOURCELOAD);
    3313     else if (!surface_is_offscreen((IWineD3DSurface*)This)) context = context_acquire(myDevice, (IWineD3DSurface *) This, CTXUSAGE_RESOURCELOAD);
    3314     else context = context_acquire(myDevice, NULL, CTXUSAGE_RESOURCELOAD);
    3315 
    3316     surface_internal_preload(SrcSurface, SRGB_RGB);
     3308    context = context_acquire(myDevice, SrcSurface,
     3309#ifdef VBOX_WITH_WDDM
     3310            CTXUSAGE_BLIT_LIGHT
    33173311#else
    3318     context = context_acquire(myDevice, SrcSurface, CTXUSAGE_BLIT);
     3312            CTXUSAGE_BLIT
    33193313#endif
     3314            );
    33203315
    33213316    surface_internal_preload((IWineD3DSurface *) This, SRGB_RGB);
     
    33273322    if(isSrcOffscreen) {
    33283323        TRACE("Reading from an offscreen target\n");
    3329 #ifdef VBOX_WINE_TEXDIRECT_USE_RESOURCELOAD
    3330         context_bind_fbo(context, GL_READ_FRAMEBUFFER, &context->src_fbo);
    3331         context_attach_surface_fbo(context, GL_READ_FRAMEBUFFER, 0, (IWineD3DSurfaceImpl *)SrcSurface);
    3332 #endif
    33333324        glReadBuffer(myDevice->offscreenBuffer);
    33343325        checkGLcall("glReadBuffer()");
    3335 #ifdef VBOX_WINE_TEXDIRECT_USE_RESOURCELOAD
    3336         context_attach_depth_stencil_fbo(context, GL_READ_FRAMEBUFFER, NULL, FALSE);
    3337 #endif
    33383326    }
    33393327    else
    33403328    {
    3341 #ifdef VBOX_WINE_TEXDIRECT_USE_RESOURCELOAD
    3342         context_bind_fbo(context, GL_READ_FRAMEBUFFER, NULL);
    3343 #endif
    33443329        glReadBuffer(surface_get_gl_buffer(SrcSurface));
    33453330        checkGLcall("glReadBuffer()");
  • trunk/src/VBox/Additions/WINNT/Graphics/Wine/wined3d/wined3d_private.h

    r38982 r39130  
    12541254    CTXUSAGE_BLIT               = 3,    /* OpenGL states are set up 3D drawing */
    12551255    CTXUSAGE_CLEAR              = 4,    /* Drawable and states are set up for clearing */
     1256    CTXUSAGE_BLIT_LIGHT         = 5,    /* OpenGL states are set up 3D drawing */
    12561257} ContextUsage;
    12571258
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette