Lines Matching refs:pContext

185  * Makes sure the @a pContext is the active OpenGL context.
187 * @parm pContext The new context.
190 # define VMSVGA3D_SET_CURRENT_CONTEXT(pState, pContext) \
191 if ((pState)->idActiveContext != (pContext)->id) \
193 BOOL fMakeCurrentRc = wglMakeCurrent((pContext)->hdc, (pContext)->hglrc); \
195 LogFlowFunc(("Changing context: %#x -> %#x\n", (pState)->idActiveContext, (pContext)->id)); \
196 (pState)->idActiveContext = (pContext)->id; \
200 # define VMSVGA3D_SET_CURRENT_CONTEXT(pState, pContext) \
201 if ((pState)->idActiveContext != (pContext)->id) \
203 vmsvga3dCocoaViewMakeCurrentContext((pContext)->cocoaView, (pContext)->cocoaContext); \
204 LogFlowFunc(("Changing context: %#x -> %#x\n", (pState)->idActiveContext, (pContext)->id)); \
205 (pState)->idActiveContext = (pContext)->id; \
208 # define VMSVGA3D_SET_CURRENT_CONTEXT(pState, pContext) \
209 if ((pState)->idActiveContext != (pContext)->id) \
212 (pContext)->window, \
213 (pContext)->glxContext); \
215 LogFlowFunc(("Changing context: %#x -> %#x\n", (pState)->idActiveContext, (pContext)->id)); \
216 (pState)->idActiveContext = (pContext)->id; \
397 * @parm pContext The context.
404 # define VMSVGA3D_CHECK_LAST_ERROR(pState, pContext) do { \
405 Assert((pState)->idActiveContext == (pContext)->id); \
406 (pContext)->lastError = glGetError(); \
407 AssertMsgReturn((pContext)->lastError == GL_NO_ERROR, \
408 ("%s (%d): last error 0x%x\n", __FUNCTION__, __LINE__, (pContext)->lastError), \
412 # define VMSVGA3D_CHECK_LAST_ERROR(pState, pContext) do { } while (0)
421 * @parm pContext The new context.
424 # define VMSVGA3D_CHECK_LAST_ERROR_WARN(pState, pContext) do { \
425 Assert((pState)->idActiveContext == (pContext)->id); \
426 (pContext)->lastError = glGetError(); \
427 AssertMsg((pContext)->lastError == GL_NO_ERROR, ("%s (%d): last error 0x%x\n", __FUNCTION__, __LINE__, (pContext)->lastError)); \
430 # define VMSVGA3D_CHECK_LAST_ERROR_WARN(pState, pContext) do { } while (0)
957 static int vmsvga3dCreateTexture(PVMSVGA3DSTATE pState, PVMSVGA3DCONTEXT pContext, uint32_t idAssociatedContext, PVMSVGA3DSURFACE pSurface);
960 static void vmsvga3dSetPackParams(PVMSVGA3DSTATE pState, PVMSVGA3DCONTEXT pContext, PVMSVGA3DSURFACE pSurface,
962 static void vmsvga3dRestorePackParams(PVMSVGA3DSTATE pState, PVMSVGA3DCONTEXT pContext, PVMSVGA3DSURFACE pSurface,
1431 PVMSVGA3DCONTEXT pContext;
1446 pContext = pState->papContexts[1];
1447 VMSVGA3D_SET_CURRENT_CONTEXT(pState, pContext);
1470 pContext = pState->papContexts[1]; /* Array may have been reallocated. */
1488 VMSVGA3D_SET_CURRENT_CONTEXT(pState, pContext);
1608 VMSVGA3D_INIT_CHECKED_BOTH(pState, pContext, pOtherCtx, glGetIntegerv(GL_MAX_LIGHTS, &pState->caps.maxActiveLights));
1609 VMSVGA3D_INIT_CHECKED_BOTH(pState, pContext, pOtherCtx, glGetIntegerv(GL_MAX_TEXTURE_BUFFER_SIZE, &pState->caps.maxTextureBufferSize));
1610 VMSVGA3D_INIT_CHECKED_BOTH(pState, pContext, pOtherCtx, glGetIntegerv(GL_MAX_TEXTURE_UNITS_ARB, &pState->caps.maxTextures));
1613 VMSVGA3D_INIT_CHECKED_BOTH(pState, pOtherCtx, pContext, glGetIntegerv(GL_MAX_CLIP_DISTANCES, &pState->caps.maxClipDistances));
1614 VMSVGA3D_SET_CURRENT_CONTEXT(pState, pContext);
1621 VMSVGA3D_INIT_CHECKED_BOTH(pState, pContext, pOtherCtx, glGetFloatv(GL_ALIASED_POINT_SIZE_RANGE, pState->caps.flPointSize));
1625 VMSVGA3D_INIT_CHECKED_BOTH(pState, pContext, pOtherCtx,
1628 VMSVGA3D_INIT_CHECKED_BOTH(pState, pContext, pOtherCtx,
1631 VMSVGA3D_INIT_CHECKED_BOTH(pState, pContext, pOtherCtx,
1634 VMSVGA3D_INIT_CHECKED_BOTH(pState, pContext, pOtherCtx,
2814 PVMSVGA3DCONTEXT pContext;
2822 pContext = pState->papContexts[cid];
2823 if (pContext->id == cid)
2825 for (uint32_t i = 0; i < RT_ELEMENTS(pContext->aSidActiveTexture); i++)
2826 if (pContext->aSidActiveTexture[i] == sid)
2827 pContext->aSidActiveTexture[i] = SVGA3D_INVALID_ID;
2828 if (pContext->sidRenderTarget == sid)
2829 pContext->sidRenderTarget = SVGA3D_INVALID_ID;
2835 pContext = &pState->SharedCtx;
2836 VMSVGA3D_SET_CURRENT_CONTEXT(pState, pContext);
2843 pContext = pState->papContexts[cid];
2844 VMSVGA3D_SET_CURRENT_CONTEXT(pState, pContext);
2854 pContext = pState->papContexts[cid];
2855 VMSVGA3D_SET_CURRENT_CONTEXT(pState, pContext);
2859 AssertReturn(pContext, VERR_INTERNAL_ERROR); /* otherwise crashes/fails; create temp context if this ever triggers! */
2874 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
2883 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
2893 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
2967 * @param pContext The active context.
2971 static void vmsvga3dSetUnpackParams(PVMSVGA3DSTATE pState, PVMSVGA3DCONTEXT pContext, PVMSVGA3DSURFACE pSurface,
2978 VMSVGA3D_ASSERT_GL_CALL(glGetIntegerv(GL_UNPACK_ALIGNMENT, &pSave->iAlignment), pState, pContext);
2980 VMSVGA3D_ASSERT_GL_CALL(glGetIntegerv(GL_UNPACK_ROW_LENGTH, &pSave->cxRow), pState, pContext);
3018 VMSVGA3D_ASSERT_GL_CALL(glPixelStorei(GL_UNPACK_ALIGNMENT, 1), pState, pContext);
3020 VMSVGA3D_ASSERT_GL_CALL(glPixelStorei(GL_UNPACK_ROW_LENGTH, 0), pState, pContext);
3023 VMSVGA3D_ASSERT_GL_CALL(glPixelStorei(GL_UNPACK_IMAGE_HEIGHT, 0), pState, pContext);
3025 VMSVGA3D_ASSERT_GL_CALL(glPixelStorei(GL_UNPACK_SWAP_BYTES, GL_FALSE), pState, pContext);
3027 VMSVGA3D_ASSERT_GL_CALL(glPixelStorei(GL_UNPACK_LSB_FIRST, GL_FALSE), pState, pContext);
3029 VMSVGA3D_ASSERT_GL_CALL(glPixelStorei(GL_UNPACK_SKIP_ROWS, 0), pState, pContext);
3031 VMSVGA3D_ASSERT_GL_CALL(glPixelStorei(GL_UNPACK_SKIP_PIXELS, 0), pState, pContext);
3033 VMSVGA3D_ASSERT_GL_CALL(glPixelStorei(GL_UNPACK_SKIP_IMAGES, 0), pState, pContext);
3042 * @param pContext The active context.
3046 static void vmsvga3dRestoreUnpackParams(PVMSVGA3DSTATE pState, PVMSVGA3DCONTEXT pContext, PVMSVGA3DSURFACE pSurface,
3051 VMSVGA3D_ASSERT_GL_CALL(glPixelStorei(GL_UNPACK_ALIGNMENT, pSave->iAlignment), pState, pContext);
3053 VMSVGA3D_ASSERT_GL_CALL(glPixelStorei(GL_UNPACK_ROW_LENGTH, pSave->cxRow), pState, pContext);
3056 VMSVGA3D_ASSERT_GL_CALL(glPixelStorei(GL_UNPACK_IMAGE_HEIGHT, pSave->cyImage), pState, pContext);
3058 VMSVGA3D_ASSERT_GL_CALL(glPixelStorei(GL_UNPACK_SWAP_BYTES, pSave->fSwapBytes), pState, pContext);
3060 VMSVGA3D_ASSERT_GL_CALL(glPixelStorei(GL_UNPACK_LSB_FIRST, pSave->fLsbFirst), pState, pContext);
3062 VMSVGA3D_ASSERT_GL_CALL(glPixelStorei(GL_UNPACK_SKIP_ROWS, pSave->cSkipRows), pState, pContext);
3064 VMSVGA3D_ASSERT_GL_CALL(glPixelStorei(GL_UNPACK_SKIP_PIXELS, pSave->cSkipPixels), pState, pContext);
3066 VMSVGA3D_ASSERT_GL_CALL(glPixelStorei(GL_UNPACK_SKIP_IMAGES, pSave->cSkipImages), pState, pContext);
3072 static int vmsvga3dCreateTexture(PVMSVGA3DSTATE pState, PVMSVGA3DCONTEXT pContext, uint32_t idAssociatedContext,
3078 pContext = &pState->SharedCtx;
3079 VMSVGA3D_SET_CURRENT_CONTEXT(pState, pContext);
3083 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
3087 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
3091 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
3095 vmsvga3dSetUnpackParams(pState, pContext, pSurface, &SavedParams);
3118 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
3139 VMSVGA3D_CHECK_LAST_ERROR_WARN(pState, pContext);
3143 vmsvga3dRestoreUnpackParams(pState, pContext, pSurface, &SavedParams);
3147 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
3175 PVMSVGA3DCONTEXT pContext;
3193 pContext = &pState->SharedCtx;
3194 VMSVGA3D_SET_CURRENT_CONTEXT(pState, pContext);
3211 pContext = pState->papContexts[cid];
3212 VMSVGA3D_SET_CURRENT_CONTEXT(pState, pContext);
3219 rc = vmsvga3dCreateTexture(pState, pContext, cid, pSurfaceSrc);
3227 rc = vmsvga3dCreateTexture(pState, pContext, cid, pSurfaceDest);
3232 pState->ext.glBindFramebuffer(GL_READ_FRAMEBUFFER, pContext->idReadFramebuffer);
3233 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
3234 pState->ext.glBindFramebuffer(GL_DRAW_FRAMEBUFFER, pContext->idDrawFramebuffer);
3235 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
3240 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
3243 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
3275 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
3278 pState->ext.glBindFramebuffer(GL_FRAMEBUFFER, pContext->idFramebuffer);
3279 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
3289 * @param pContext The active context.
3293 static void vmsvga3dSetPackParams(PVMSVGA3DSTATE pState, PVMSVGA3DCONTEXT pContext, PVMSVGA3DSURFACE pSurface,
3300 VMSVGA3D_ASSERT_GL_CALL(glGetIntegerv(GL_UNPACK_ALIGNMENT, &pSave->iAlignment), pState, pContext);
3302 VMSVGA3D_ASSERT_GL_CALL(glGetIntegerv(GL_UNPACK_ROW_LENGTH, &pSave->cxRow), pState, pContext);
3340 VMSVGA3D_ASSERT_GL_CALL(glPixelStorei(GL_PACK_ALIGNMENT, 1), pState, pContext);
3342 VMSVGA3D_ASSERT_GL_CALL(glPixelStorei(GL_PACK_ROW_LENGTH, 0), pState, pContext);
3345 VMSVGA3D_ASSERT_GL_CALL(glPixelStorei(GL_PACK_IMAGE_HEIGHT, 0), pState, pContext);
3347 VMSVGA3D_ASSERT_GL_CALL(glPixelStorei(GL_PACK_SWAP_BYTES, GL_FALSE), pState, pContext);
3349 VMSVGA3D_ASSERT_GL_CALL(glPixelStorei(GL_PACK_LSB_FIRST, GL_FALSE), pState, pContext);
3351 VMSVGA3D_ASSERT_GL_CALL(glPixelStorei(GL_PACK_SKIP_ROWS, 0), pState, pContext);
3353 VMSVGA3D_ASSERT_GL_CALL(glPixelStorei(GL_PACK_SKIP_PIXELS, 0), pState, pContext);
3355 VMSVGA3D_ASSERT_GL_CALL(glPixelStorei(GL_PACK_SKIP_IMAGES, 0), pState, pContext);
3364 * @param pContext The active context.
3368 static void vmsvga3dRestorePackParams(PVMSVGA3DSTATE pState, PVMSVGA3DCONTEXT pContext, PVMSVGA3DSURFACE pSurface,
3373 VMSVGA3D_ASSERT_GL_CALL(glPixelStorei(GL_PACK_ALIGNMENT, pSave->iAlignment), pState, pContext);
3375 VMSVGA3D_ASSERT_GL_CALL(glPixelStorei(GL_PACK_ROW_LENGTH, pSave->cxRow), pState, pContext);
3378 VMSVGA3D_ASSERT_GL_CALL(glPixelStorei(GL_PACK_IMAGE_HEIGHT, pSave->cyImage), pState, pContext);
3380 VMSVGA3D_ASSERT_GL_CALL(glPixelStorei(GL_PACK_SWAP_BYTES, pSave->fSwapBytes), pState, pContext);
3382 VMSVGA3D_ASSERT_GL_CALL(glPixelStorei(GL_PACK_LSB_FIRST, pSave->fLsbFirst), pState, pContext);
3384 VMSVGA3D_ASSERT_GL_CALL(glPixelStorei(GL_PACK_SKIP_ROWS, pSave->cSkipRows), pState, pContext);
3386 VMSVGA3D_ASSERT_GL_CALL(glPixelStorei(GL_PACK_SKIP_PIXELS, pSave->cSkipPixels), pState, pContext);
3388 VMSVGA3D_ASSERT_GL_CALL(glPixelStorei(GL_PACK_SKIP_IMAGES, pSave->cSkipImages), pState, pContext);
3481 PVMSVGA3DCONTEXT pContext = &pState->SharedCtx;
3491 PVMSVGA3DCONTEXT pContext = pState->papContexts[cid];
3493 VMSVGA3D_SET_CURRENT_CONTEXT(pState, pContext);
3542 VMSVGA3D_CHECK_LAST_ERROR_WARN(pState, pContext);
3545 VMSVGA3D_CHECK_LAST_ERROR_WARN(pState, pContext);
3549 vmsvga3dSetPackParams(pState, pContext, pSurface, &SavedParams);
3556 VMSVGA3D_CHECK_LAST_ERROR_WARN(pState, pContext);
3558 vmsvga3dRestorePackParams(pState, pContext, pSurface, &SavedParams);
3562 VMSVGA3D_CHECK_LAST_ERROR_WARN(pState, pContext);
3612 VMSVGA3D_CHECK_LAST_ERROR_WARN(pState, pContext);
3616 VMSVGA3D_CHECK_LAST_ERROR_WARN(pState, pContext);
3622 vmsvga3dSetUnpackParams(pState, pContext, pSurface, &SavedParams); /** @todo do we need to set ROW_LENGTH to w here? */
3634 VMSVGA3D_CHECK_LAST_ERROR_WARN(pState, pContext);
3637 vmsvga3dRestoreUnpackParams(pState, pContext, pSurface, &SavedParams);
3641 VMSVGA3D_CHECK_LAST_ERROR_WARN(pState, pContext);
3662 if (VMSVGA3D_GL_IS_SUCCESS(pContext))
3671 Assert(VMSVGA3D_GL_IS_SUCCESS(pContext));
3674 ("cbStrictBufSize=%#x cbSurface=%#x pContext->id=%#x\n", (uint32_t)cbStrictBufSize, pMipLevel->cbSurface, pContext->id));
3677 ("cbStrictBufSize=%#x cbSurface=%#x isAssociatedContext=%#x pContext->id=%#x\n", (uint32_t)cbStrictBufSize, pMipLevel->cbSurface, pSurface->idAssociatedContext, pContext->id));
3708 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
3711 VMSVGA3D_GL_GET_AND_COMPLAIN(pState, pContext, ("glMapBuffer(GL_ARRAY_BUFFER, %#x) -> NULL\n", enmGlTransfer));
3714 VMSVGA3D_GL_COMPLAIN(pState, pContext, ("glBindBuffer(GL_ARRAY_BUFFER, %#x)\n", pSurface->oglId.buffer));
3716 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
3811 PVMSVGA3DCONTEXT pContext;
3832 pContext = &pState->SharedCtx;
3833 VMSVGA3D_SET_CURRENT_CONTEXT(pState, pContext);
3844 pContext = pState->papContexts[cid];
3845 VMSVGA3D_SET_CURRENT_CONTEXT(pState, pContext);
3852 rc = vmsvga3dCreateTexture(pState, pContext, cid, pSurface);
3862 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
3866 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
3870 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
3874 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
3884 PVMSVGA3DCONTEXT pContext;
3910 pContext = &pState->SharedCtx;
3911 VMSVGA3D_SET_CURRENT_CONTEXT(pState, pContext);
3927 pContext = pState->papContexts[cid];
3928 VMSVGA3D_SET_CURRENT_CONTEXT(pState, pContext);
3985 oldVShader = pContext->state.shidVertex;
3986 oldPShader = pContext->state.shidPixel;
3991 if (pContext->pShaderContext)
3992 ShaderUpdateState(pContext->pShaderContext, 0);
3995 pState->ext.glBindFramebuffer(GL_READ_FRAMEBUFFER, pContext->idReadFramebuffer);
3996 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
3998 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
4003 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
4079 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
4095 pState->ext.glBindFramebuffer(GL_FRAMEBUFFER, pContext->idFramebuffer);
4096 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
4100 pState->ext.glBindFramebuffer(GL_READ_FRAMEBUFFER, pContext->idReadFramebuffer);
4101 VMSVGA3D_CHECK_LAST_ERROR_WARN(pState, pContext);
4103 VMSVGA3D_CHECK_LAST_ERROR_WARN(pState, pContext);
4107 VMSVGA3D_CHECK_LAST_ERROR_WARN(pState, pContext);
4123 VMSVGA3D_CHECK_LAST_ERROR_WARN(pState, pContext);
4151 pState->ext.glBindFramebuffer(GL_FRAMEBUFFER, pContext->idFramebuffer);
4152 VMSVGA3D_CHECK_LAST_ERROR_WARN(pState, pContext);
4157 BOOL ret = SwapBuffers(pContext->hdc);
4160 vmsvga3dCocoaSwapBuffers(pContext->cocoaView, pContext->cocoaContext);
4163 if (!pContext->fMapped)
4165 XMapWindow(pState->display, pContext->window);
4166 pContext->fMapped = true;
4169 glXSwapBuffers(pState->display, pContext->window);
4216 PVMSVGA3DCONTEXT pContext;
4242 pContext = &pState->SharedCtx;
4255 pContext = (PVMSVGA3DCONTEXT)RTMemAllocZ(sizeof(*pContext));
4256 AssertReturn(pContext, VERR_NO_MEMORY);
4257 pContext->id = SVGA3D_INVALID_ID;
4258 pState->papContexts[pState->cContexts++] = pContext;
4265 pContext = pState->papContexts[cid];
4294 Log(("Sharing display lists between cid=%d and cid=%d\n", pContext->id, i));
4303 memset(pContext, 0, sizeof(*pContext));
4304 pContext->id = cid;
4305 for (uint32_t i = 0; i < RT_ELEMENTS(pContext->aSidActiveTexture); i++)
4306 pContext->aSidActiveTexture[i] = SVGA3D_INVALID_ID;
4308 pContext->sidRenderTarget = SVGA3D_INVALID_ID;
4309 pContext->state.shidVertex = SVGA3D_INVALID_ID;
4310 pContext->state.shidPixel = SVGA3D_INVALID_ID;
4311 pContext->idFramebuffer = OPENGL_INVALID_ID;
4312 pContext->idReadFramebuffer = OPENGL_INVALID_ID;
4313 pContext->idDrawFramebuffer = OPENGL_INVALID_ID;
4315 rc = ShaderContextCreate(&pContext->pShaderContext);
4318 for (uint32_t i = 0; i < RT_ELEMENTS(pContext->state.aRenderTargets); i++)
4319 pContext->state.aRenderTargets[i] = SVGA3D_INVALID_ID;
4348 rc = vmsvga3dSendThreadMessage(pState->pWindowThread, pState->WndRequestSem, WM_VMSVGA3D_CREATEWINDOW, (WPARAM)&pContext->hwnd, (LPARAM)&cs);
4351 pContext->hdc = GetDC(pContext->hwnd);
4352 AssertMsgReturn(pContext->hdc, ("GetDC %x failed with %d\n", pContext->hwnd, GetLastError()), VERR_INTERNAL_ERROR);
4377 pixelFormat = ChoosePixelFormat(pContext->hdc, &pfd);
4379 pixelFormat = ChoosePixelFormat(pContext->hdc, &pfd);
4382 ret = SetPixelFormat(pContext->hdc, pixelFormat, &pfd);
4385 pContext->hglrc = wglCreateContext(pContext->hdc);
4386 AssertMsgReturn(pContext->hglrc, ("wglCreateContext %x failed with %d\n", pContext->hdc, GetLastError()), VERR_INTERNAL_ERROR);
4390 ret = wglShareLists(pSharedCtx->hglrc, pContext->hglrc);
4391 AssertMsg(ret == TRUE, ("wglShareLists(%p, %p) failed with %d\n", pSharedCtx->hglrc, pContext->hglrc, GetLastError()));
4395 pContext->fOtherProfile = RT_BOOL(fFlags & VMSVGA3D_DEF_CTX_F_OTHER_PROFILE);
4398 vmsvga3dCocoaCreateContext(&pContext->cocoaContext, shareContext, pContext->fOtherProfile);
4400 vmsvga3dCocoaCreateView(&pContext->cocoaView, pHostView);
4438 pContext->window = XCreateWindow(pState->display, hostWindow,//XDefaultRootWindow(pState->display),//hostWindow,
4442 AssertMsgReturn(pContext->window, ("XCreateWindow failed"), VERR_INTERNAL_ERROR);
4448 pContext->glxContext = glXCreateContext(pState->display, vi, shareContext, GL_TRUE);
4449 AssertMsgReturn(pContext->glxContext, ("glXCreateContext failed"), VERR_INTERNAL_ERROR);
4452 VMSVGA3D_SET_CURRENT_CONTEXT(pState, pContext);
4458 pState->ext.glGenFramebuffers(1, &pContext->idFramebuffer);
4459 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
4462 pState->ext.glBindFramebuffer(GL_FRAMEBUFFER, pContext->idFramebuffer);
4463 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
4466 pState->ext.glGenFramebuffers(1, &pContext->idReadFramebuffer);
4467 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
4469 pState->ext.glGenFramebuffers(1, &pContext->idDrawFramebuffer);
4470 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
4476 VMSVGA3D_SET_CURRENT_CONTEXT(pState, pContext);
4523 PVMSVGA3DCONTEXT pContext = pState->papContexts[cid];
4527 VMSVGA3D_SET_CURRENT_CONTEXT(pState, pContext);
4530 for (uint32_t i = 0; i < pContext->cPixelShaders; i++)
4532 if (pContext->paPixelShader[i].id != SVGA3D_INVALID_ID)
4533 vmsvga3dShaderDestroy(pThis, pContext->paPixelShader[i].cid, pContext->paPixelShader[i].id, pContext->paPixelShader[i].type);
4535 if (pContext->paPixelShader)
4536 RTMemFree(pContext->paPixelShader);
4539 for (uint32_t i = 0; i < pContext->cVertexShaders; i++)
4541 if (pContext->paVertexShader[i].id != SVGA3D_INVALID_ID)
4542 vmsvga3dShaderDestroy(pThis, pContext->paVertexShader[i].cid, pContext->paVertexShader[i].id, pContext->paVertexShader[i].type);
4544 if (pContext->paVertexShader)
4545 RTMemFree(pContext->paVertexShader);
4547 if (pContext->state.paVertexShaderConst)
4548 RTMemFree(pContext->state.paVertexShaderConst);
4549 if (pContext->state.paPixelShaderConst)
4550 RTMemFree(pContext->state.paPixelShaderConst);
4552 if (pContext->pShaderContext)
4554 int rc = ShaderContextDestroy(pContext->pShaderContext);
4601 if (pContext->idFramebuffer != OPENGL_INVALID_ID)
4605 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
4606 pState->ext.glDeleteFramebuffers(1, &pContext->idFramebuffer);
4607 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
4609 if (pContext->idReadFramebuffer != OPENGL_INVALID_ID)
4611 pState->ext.glDeleteFramebuffers(1, &pContext->idReadFramebuffer);
4612 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
4614 if (pContext->idDrawFramebuffer != OPENGL_INVALID_ID)
4616 pState->ext.glDeleteFramebuffers(1, &pContext->idDrawFramebuffer);
4617 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
4621 wglMakeCurrent(pContext->hdc, NULL);
4622 wglDeleteContext(pContext->hglrc);
4623 ReleaseDC(pContext->hwnd, pContext->hdc);
4626 int rc = vmsvga3dSendThreadMessage(pState->pWindowThread, pState->WndRequestSem, WM_VMSVGA3D_DESTROYWINDOW, (WPARAM)pContext->hwnd, 0);
4629 vmsvga3dCocoaDestroyView(pContext->cocoaView);
4630 vmsvga3dCocoaDestroyContext(pContext->cocoaContext);
4633 glXDestroyContext(pState->display, pContext->glxContext);
4634 XDestroyWindow(pState->display, pContext->window);
4637 memset(pContext, 0, sizeof(*pContext));
4638 pContext->id = SVGA3D_INVALID_ID;
4657 PVMSVGA3DCONTEXT pContext = pState->papContexts[i];
4658 uint32_t cid = pContext->id;
4670 int rc = vmsvga3dSendThreadMessage(pState->pWindowThread, pState->WndRequestSem, WM_VMSVGA3D_RESIZEWINDOW, (WPARAM)pContext->hwnd, (LPARAM)&cs);
4673 vmsvga3dCocoaViewSetSize(pContext->cocoaView, pThis->svga.uWidth, pThis->svga.uHeight);
4678 XConfigureWindow(pState->display, pContext->window, CWWidth | CWHeight, &wc);
4688 PVMSVGA3DCONTEXT pContext;
4701 pContext = pState->papContexts[cid];
4702 VMSVGA3D_SET_CURRENT_CONTEXT(pState, pContext);
4705 pContext->state.aTransformState[type].fValid = true;
4706 memcpy(pContext->state.aTransformState[type].matrix, matrix, sizeof(pContext->state.aTransformState[type].matrix));
4707 pContext->state.u32UpdateFlags |= VMSVGA3D_UPDATE_TRANSFORM;
4720 if (pContext->state.aTransformState[SVGA3D_TRANSFORM_WORLD].fValid)
4721 glMultMatrixf(pContext->state.aTransformState[SVGA3D_TRANSFORM_WORLD].matrix);
4722 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
4728 int rc = ShaderTransformProjection(pContext->state.RectViewPort.w, pContext->state.RectViewPort.h, matrix);
4735 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
4737 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
4753 if (pContext->state.aTransformState[SVGA3D_TRANSFORM_VIEW].fValid)
4754 glLoadMatrixf(pContext->state.aTransformState[SVGA3D_TRANSFORM_VIEW].matrix);
4758 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
4777 for (uint32_t j = 0; j < RT_ELEMENTS(pContext->state.aClipPlane); j++)
4779 if (pContext->state.aClipPlane[j].fValid == true)
4780 vmsvga3dSetClipPlane(pThis, cid, j, pContext->state.aClipPlane[j].plane);
4784 for (uint32_t j = 0; j < RT_ELEMENTS(pContext->state.aLightData); j++)
4786 if (pContext->state.aLightData[j].fValidData == true)
4787 vmsvga3dSetLightData(pThis, cid, j, &pContext->state.aLightData[j].data);
4796 PVMSVGA3DCONTEXT pContext;
4808 pContext = pState->papContexts[cid];
4809 VMSVGA3D_SET_CURRENT_CONTEXT(pState, pContext);
4811 pContext->state.zRange = zRange;
4812 pContext->state.u32UpdateFlags |= VMSVGA3D_UPDATE_ZRANGE;
4820 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
4938 PVMSVGA3DCONTEXT pContext;
4950 pContext = pState->papContexts[cid];
4951 VMSVGA3D_SET_CURRENT_CONTEXT(pState, pContext);
4959 pContext->state.aRenderState[pRenderState[i].state] = pRenderState[i];
4970 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
5015 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
5021 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
5027 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
5045 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
5058 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
5070 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
5076 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
5081 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
5086 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
5091 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
5139 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
5143 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
5177 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
5198 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
5218 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
5227 renderstate[0].uintValue = pContext->state.aRenderState[SVGA3D_RS_SRCBLEND].uintValue;
5229 renderstate[1].uintValue = pContext->state.aRenderState[SVGA3D_RS_BLENDEQUATION].uintValue;
5234 if (pContext->state.aRenderState[SVGA3D_RS_BLENDENABLE].uintValue != 0)
5253 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
5255 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
5257 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
5259 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
5281 if (pContext->state.aRenderState[SVGA3D_RS_SEPARATEALPHABLENDENABLE].uintValue != 0)
5285 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
5291 if (pContext->state.aRenderState[SVGA3D_RS_SEPARATEALPHABLENDENABLE].uintValue != 0)
5292 pState->ext.glBlendEquationSeparate(vmsvga3dBlendEquation2GL(pContext->state.aRenderState[SVGA3D_RS_BLENDEQUATION].uintValue),
5293 vmsvga3dBlendEquation2GL(pContext->state.aRenderState[SVGA3D_RS_BLENDEQUATIONALPHA].uintValue));
5302 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
5316 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
5345 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
5355 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
5363 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
5365 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
5374 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
5376 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
5393 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
5395 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
5397 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
5420 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
5426 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
5437 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
5439 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
5441 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
5460 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
5484 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
5486 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
5489 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
5504 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
5506 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
5508 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
5527 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
5547 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
5550 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
5562 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
5565 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
5582 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
5666 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
5768 PVMSVGA3DCONTEXT pContext;
5785 pContext = pState->papContexts[cid];
5786 VMSVGA3D_SET_CURRENT_CONTEXT(pState, pContext);
5789 pContext->state.aRenderTargets[type] = target.sid;
5799 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
5810 pContext->sidRenderTarget = SVGA3D_INVALID_ID;
5812 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
5833 pContext = &pState->SharedCtx;
5834 VMSVGA3D_SET_CURRENT_CONTEXT(pState, pContext);
5837 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
5840 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
5846 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
5850 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
5852 pContext = pState->papContexts[cid];
5853 VMSVGA3D_SET_CURRENT_CONTEXT(pState, pContext);
5864 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
5877 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
5893 int rc = vmsvga3dCreateTexture(pState, pContext, cid, pRenderTarget);
5903 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
5905 pContext->sidRenderTarget = target.sid;
6096 PVMSVGA3DCONTEXT pContext;
6108 pContext = pState->papContexts[cid];
6109 VMSVGA3D_SET_CURRENT_CONTEXT(pState, pContext);
6121 pContext->state.aTextureState[pTextureState[i].stage][pTextureState[i].name] = pTextureState[i];
6132 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
6181 currentStage, pTextureState[i].value, pContext->aSidActiveTexture[currentStage]));
6183 pContext->aSidActiveTexture[currentStage] = SVGA3D_INVALID_ID;
6186 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
6189 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
6202 pSurface->pMipmapLevels[0].size.height, pContext->aSidActiveTexture[currentStage]));
6210 int rc = vmsvga3dCreateTexture(pState, pContext, cid, pSurface);
6215 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
6219 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
6221 if (pContext->aSidActiveTexture[currentStage] != sid)
6228 SVGA3dTextureState *pTextureStateIter = &pContext->state.aTextureState[iStage][j];
6232 vmsvga3dSetTextureState(pThis, pContext->id, 1, pTextureStateIter);
6236 pContext->aSidActiveTexture[currentStage] = sid;
6259 uint32_t mipFilter = pContext->state.aTextureState[currentStage][SVGA3D_TS_MIPFILTER].value;
6260 uint32_t minFilter = pContext->state.aTextureState[currentStage][SVGA3D_TS_MINFILTER].value;
6299 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
6305 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
6341 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
6350 PVMSVGA3DCONTEXT pContext;
6363 pContext = pState->papContexts[cid];
6364 VMSVGA3D_SET_CURRENT_CONTEXT(pState, pContext);
6386 pContext->state.aMaterial[face].fValid = true;
6387 pContext->state.aMaterial[face].material = *pMaterial;
6388 pContext->state.u32UpdateFlags |= VMSVGA3D_UPDATE_MATERIAL;
6395 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
6403 PVMSVGA3DCONTEXT pContext;
6416 pContext = pState->papContexts[cid];
6417 VMSVGA3D_SET_CURRENT_CONTEXT(pState, pContext);
6422 pContext->state.aLightData[index].fValidData = true;
6423 pContext->state.aLightData[index].data = *pData;
6439 glLoadMatrixf(pContext->state.aTransformState[SVGA3D_TRANSFORM_VIEW].matrix);
6462 VMSVGA3D_CHECK_LAST_ERROR_WARN(pState, pContext);
6465 VMSVGA3D_CHECK_LAST_ERROR_WARN(pState, pContext);
6469 VMSVGA3D_CHECK_LAST_ERROR_WARN(pState, pContext);
6472 VMSVGA3D_CHECK_LAST_ERROR_WARN(pState, pContext);
6475 VMSVGA3D_CHECK_LAST_ERROR_WARN(pState, pContext);
6493 VMSVGA3D_CHECK_LAST_ERROR_WARN(pState, pContext);
6501 VMSVGA3D_CHECK_LAST_ERROR_WARN(pState, pContext);
6530 VMSVGA3D_CHECK_LAST_ERROR_WARN(pState, pContext);
6533 VMSVGA3D_CHECK_LAST_ERROR_WARN(pState, pContext);
6537 VMSVGA3D_CHECK_LAST_ERROR_WARN(pState, pContext);
6540 VMSVGA3D_CHECK_LAST_ERROR_WARN(pState, pContext);
6543 VMSVGA3D_CHECK_LAST_ERROR_WARN(pState, pContext);
6559 VMSVGA3D_CHECK_LAST_ERROR_WARN(pState, pContext);
6562 VMSVGA3D_CHECK_LAST_ERROR_WARN(pState, pContext);
6565 VMSVGA3D_CHECK_LAST_ERROR_WARN(pState, pContext);
6583 PVMSVGA3DCONTEXT pContext;
6595 pContext = pState->papContexts[cid];
6596 VMSVGA3D_SET_CURRENT_CONTEXT(pState, pContext);
6600 pContext->state.aLightData[index].fEnabled = !!enabled;
6607 if (!pContext->state.aLightData[index].fValidData)
6614 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
6620 PVMSVGA3DCONTEXT pContext;
6632 pContext = pState->papContexts[cid];
6633 VMSVGA3D_SET_CURRENT_CONTEXT(pState, pContext);
6636 pContext->state.RectViewPort = *pRect;
6637 pContext->state.u32UpdateFlags |= VMSVGA3D_UPDATE_VIEWPORT;
6641 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
6644 if (pContext->state.aTransformState[SVGA3D_TRANSFORM_PROJECTION].fValid == true)
6646 vmsvga3dSetTransform(pThis, cid, SVGA3D_TRANSFORM_PROJECTION, pContext->state.aTransformState[SVGA3D_TRANSFORM_PROJECTION].matrix);
6666 PVMSVGA3DCONTEXT pContext;
6680 pContext = pState->papContexts[cid];
6681 VMSVGA3D_SET_CURRENT_CONTEXT(pState, pContext);
6684 pContext->state.aClipPlane[index].fValid = true;
6685 memcpy(pContext->state.aClipPlane[index].plane, plane, sizeof(pContext->state.aClipPlane[index].plane));
6694 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
6701 PVMSVGA3DCONTEXT pContext;
6713 pContext = pState->papContexts[cid];
6714 VMSVGA3D_SET_CURRENT_CONTEXT(pState, pContext);
6717 pContext->state.u32UpdateFlags |= VMSVGA3D_UPDATE_SCISSORRECT;
6718 pContext->state.RectScissor = *pRect;
6721 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
6739 PVMSVGA3DCONTEXT pContext;
6752 pContext = pState->papContexts[cid];
6753 VMSVGA3D_SET_CURRENT_CONTEXT(pState, pContext);
6792 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
6794 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
6802 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
6943 int vmsvga3dDrawPrimitivesProcessVertexDecls(PVMSVGA3DSTATE pState, PVMSVGA3DCONTEXT pContext, uint32_t iVertexDeclBase, uint32_t numVertexDecls, SVGA3dVertexDecl *pVertexDecl)
6959 PVMSVGA3DCONTEXT pSavedCtx = pContext;
6960 pContext = &pState->SharedCtx;
6961 VMSVGA3D_SET_CURRENT_CONTEXT(pState, pContext);
6965 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
6968 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
6973 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
6982 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
6984 pContext = pSavedCtx;
6985 VMSVGA3D_SET_CURRENT_CONTEXT(pState, pContext);
6994 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
6997 pVertexSurface->idAssociatedContext = pContext->id;
6998 LogFlow(("vmsvga3dDrawPrimitivesProcessVertexDecls: sid=%x idAssociatedContext %#x -> %#x\n", pVertexSurface->id, pVertexSurface->idAssociatedContext, pContext->id));
7014 if (pContext->state.shidVertex != SVGA_ID_INVALID)
7018 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
7021 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
7031 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
7034 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
7044 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
7047 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
7060 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
7063 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
7079 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
7082 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
7086 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
7089 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
7110 int vmsvga3dDrawPrimitivesCleanupVertexDecls(PVMSVGA3DSTATE pState, PVMSVGA3DCONTEXT pContext, uint32_t iVertexDeclBase, uint32_t numVertexDecls, SVGA3dVertexDecl *pVertexDecl)
7115 if (pContext->state.shidVertex != SVGA_ID_INVALID)
7119 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
7128 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
7136 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
7148 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
7160 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
7164 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
7176 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
7182 PVMSVGA3DCONTEXT pContext;
7202 pContext = pState->papContexts[cid];
7203 VMSVGA3D_SET_CURRENT_CONTEXT(pState, pContext);
7206 if (pContext->pShaderContext)
7210 if (pContext->sidRenderTarget != SVGA_ID_INVALID)
7212 PVMSVGA3DSURFACE pRenderTarget = pState->papSurfaces[pContext->sidRenderTarget];
7216 ShaderUpdateState(pContext->pShaderContext, rtHeight);
7235 rc = vmsvga3dDrawPrimitivesProcessVertexDecls(pState, pContext, iCurrentVertex, iVertex - iCurrentVertex, &pVertexDecl[iCurrentVertex]);
7277 pContext = &pState->SharedCtx;
7278 VMSVGA3D_SET_CURRENT_CONTEXT(pState, pContext);
7282 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
7285 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
7291 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
7300 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
7302 pContext = pState->papContexts[cid];
7303 VMSVGA3D_SET_CURRENT_CONTEXT(pState, pContext);
7313 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
7316 LogFlow(("vmsvga3dDrawPrimitives: sid=%x idAssociatedContext %#x -> %#x\n", pIndexSurface->id, pIndexSurface->idAssociatedContext, pContext->id));
7317 pIndexSurface->idAssociatedContext = pContext->id;
7348 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
7350 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
7371 rc = vmsvga3dDrawPrimitivesCleanupVertexDecls(pState, pContext, iCurrentVertex, iVertex - iCurrentVertex, &pVertexDecl[iCurrentVertex]);
7377 for (uint32_t i = 0; i < RT_ELEMENTS(pContext->aSidActiveTexture); i++)
7379 if (pContext->aSidActiveTexture[i] != SVGA3D_INVALID_ID)
7385 VMSVGA3D_CHECK_LAST_ERROR_WARN(pState, pContext);
7387 VMSVGA3D_CHECK_LAST_ERROR_WARN(pState, pContext);
7390 VMSVGA3D_CHECK_LAST_ERROR_WARN(pState, pContext);
7392 VMSVGA3D_CHECK_LAST_ERROR_WARN(pState, pContext);
7395 if (pContext->aSidActiveTexture[activeTextureUnit - GL_TEXTURE0] != SVGA3D_INVALID_ID)
7398 pTexture = pState->papSurfaces[pContext->aSidActiveTexture[activeTextureUnit - GL_TEXTURE0]];
7403 PVMSVGA3DSURFACE pTexture = pState->papSurfaces[pContext->aSidActiveTexture[i]];
7404 AssertMsg(pTexture->id == pContext->aSidActiveTexture[i], ("%x vs %x\n", pTexture->id == pContext->aSidActiveTexture[i]));
7407 activeTextureUnit - GL_TEXTURE0, pContext->aSidActiveTexture[i]));
7414 if (pContext->aSidActiveTexture[0])
7421 vmsvga3dCommandPresent(pThis, pContext->sidRenderTarget, 0, NULL);
7430 PVMSVGA3DCONTEXT pContext;
7445 pContext = pState->papContexts[cid];
7446 VMSVGA3D_SET_CURRENT_CONTEXT(pState, pContext);
7451 if (shid >= pContext->cVertexShaders)
7453 void *pvNew = RTMemRealloc(pContext->paVertexShader, sizeof(VMSVGA3DSHADER) * (shid + 1));
7455 pContext->paVertexShader = (PVMSVGA3DSHADER)pvNew;
7456 memset(&pContext->paVertexShader[pContext->cVertexShaders], 0, sizeof(VMSVGA3DSHADER) * (shid + 1 - pContext->cVertexShaders));
7457 for (uint32_t i = pContext->cVertexShaders; i < shid + 1; i++)
7458 pContext->paVertexShader[i].id = SVGA3D_INVALID_ID;
7459 pContext->cVertexShaders = shid + 1;
7462 if (pContext->paVertexShader[shid].id != SVGA3D_INVALID_ID)
7463 vmsvga3dShaderDestroy(pThis, cid, shid, pContext->paVertexShader[shid].type);
7465 pShader = &pContext->paVertexShader[shid];
7470 if (shid >= pContext->cPixelShaders)
7472 void *pvNew = RTMemRealloc(pContext->paPixelShader, sizeof(VMSVGA3DSHADER) * (shid + 1));
7474 pContext->paPixelShader = (PVMSVGA3DSHADER)pvNew;
7475 memset(&pContext->paPixelShader[pContext->cPixelShaders], 0, sizeof(VMSVGA3DSHADER) * (shid + 1 - pContext->cPixelShaders));
7476 for (uint32_t i = pContext->cPixelShaders; i < shid + 1; i++)
7477 pContext->paPixelShader[i].id = SVGA3D_INVALID_ID;
7478 pContext->cPixelShaders = shid + 1;
7481 if (pContext->paPixelShader[shid].id != SVGA3D_INVALID_ID)
7482 vmsvga3dShaderDestroy(pThis, cid, shid, pContext->paPixelShader[shid].type);
7484 pShader = &pContext->paPixelShader[shid];
7509 rc = ShaderCreateVertexShader(pContext->pShaderContext, (const uint32_t *)pShaderData, &pShader->u.pVertexShader);
7513 rc = ShaderCreatePixelShader(pContext->pShaderContext, (const uint32_t *)pShaderData, &pShader->u.pPixelShader);
7531 PVMSVGA3DCONTEXT pContext;
7545 pContext = pState->papContexts[cid];
7546 VMSVGA3D_SET_CURRENT_CONTEXT(pState, pContext);
7550 if ( shid < pContext->cVertexShaders
7551 && pContext->paVertexShader[shid].id == shid)
7553 pShader = &pContext->paVertexShader[shid];
7554 rc = ShaderDestroyVertexShader(pContext->pShaderContext, pShader->u.pVertexShader);
7561 if ( shid < pContext->cPixelShaders
7562 && pContext->paPixelShader[shid].id == shid)
7564 pShader = &pContext->paPixelShader[shid];
7565 rc = ShaderDestroyPixelShader(pContext->pShaderContext, pShader->u.pPixelShader);
7585 PVMSVGA3DCONTEXT pContext;
7598 pContext = pState->papContexts[cid];
7599 VMSVGA3D_SET_CURRENT_CONTEXT(pState, pContext);
7604 pContext->state.shidVertex = shid;
7605 pContext->state.u32UpdateFlags |= VMSVGA3D_UPDATE_VERTEXSHADER;
7607 if ( shid < pContext->cVertexShaders
7608 && pContext->paVertexShader[shid].id == shid)
7610 PVMSVGA3DSHADER pShader = &pContext->paVertexShader[shid];
7613 rc = ShaderSetVertexShader(pContext->pShaderContext, pShader->u.pVertexShader);
7620 rc = ShaderSetVertexShader(pContext->pShaderContext, NULL);
7629 pContext->state.shidPixel = shid;
7630 pContext->state.u32UpdateFlags |= VMSVGA3D_UPDATE_PIXELSHADER;
7633 if ( shid < pContext->cPixelShaders
7634 && pContext->paPixelShader[shid].id == shid)
7636 PVMSVGA3DSHADER pShader = &pContext->paPixelShader[shid];
7639 rc = ShaderSetPixelShader(pContext->pShaderContext, pShader->u.pPixelShader);
7646 rc = ShaderSetPixelShader(pContext->pShaderContext, NULL);
7658 PVMSVGA3DCONTEXT pContext;
7671 pContext = pState->papContexts[cid];
7672 VMSVGA3D_SET_CURRENT_CONTEXT(pState, pContext);
7695 vmsvga3dSaveShaderConst(pContext, reg + i, type, ctype, pValues[i*4 + 0], pValues[i*4 + 1], pValues[i*4 + 2], pValues[i*4 + 3]);
7704 rc = ShaderSetVertexShaderConstantF(pContext->pShaderContext, reg, (const float *)pValues, cRegisters);
7708 rc = ShaderSetVertexShaderConstantI(pContext->pShaderContext, reg, (const int32_t *)pValues, cRegisters);
7712 rc = ShaderSetVertexShaderConstantB(pContext->pShaderContext, reg, (const uint8_t *)pValues, cRegisters);
7725 rc = ShaderSetPixelShaderConstantF(pContext->pShaderContext, reg, (const float *)pValues, cRegisters);
7729 rc = ShaderSetPixelShaderConstantI(pContext->pShaderContext, reg, (const int32_t *)pValues, cRegisters);
7733 rc = ShaderSetPixelShaderConstantB(pContext->pShaderContext, reg, (const uint8_t *)pValues, cRegisters);