< prev index next >

src/java.desktop/windows/native/libawt/java2d/d3d/D3DVertexCacher.cpp

Print this page

        

*** 209,218 **** --- 209,228 ---- res = lpD3DDevice->SetStreamSource(0, lpD3DVertexBuffer, 0, sizeof(J2DLVERTEX)); RETURN_STATUS_IF_FAILED(res); lpD3DDevice->SetFVF(D3DFVF_J2DLVERTEX); + + fudge2 = HV_FF2; + if (fudge2 > 0) { + D3DADAPTER_IDENTIFIER9 aid; + if (SUCCEEDED(pCtx->Get3DObject()->GetAdapterIdentifier(pCtx-> + getAdapterOrdinal(), 0, &aid)) && aid.VendorId == 0x8086) { + // Intel + fudge2 -= 0.09f; + } + } return res; } void D3DVertexCacher::ReleaseDefPoolResources()
*** 231,244 **** fy1 = (float)y1+HV_FF1; fy2 = fy1; if (x1 > x2) { fx1 = (float)x2+HV_FF3; ! fx2 = (float)x1+HV_FF2; } else if (x1 < x2) { fx1 = (float)x1+HV_FF3; ! fx2 = (float)x2+HV_FF2; } else { // single point, offset a little so that a single // pixel is rendered fx1 = (float)x1-SP_FF4; fy1 = (float)y1-SP_FF4; --- 241,254 ---- fy1 = (float)y1+HV_FF1; fy2 = fy1; if (x1 > x2) { fx1 = (float)x2+HV_FF3; ! fx2 = (float)x1+fudge2; } else if (x1 < x2) { fx1 = (float)x1+HV_FF3; ! fx2 = (float)x2+fudge2; } else { // single point, offset a little so that a single // pixel is rendered fx1 = (float)x1-SP_FF4; fy1 = (float)y1-SP_FF4;
*** 249,262 **** // vertical fx1 = (float)x1+HV_FF1; fx2 = fx1; if (y1 > y2) { fy1 = (float)y2+HV_FF3; ! fy2 = (float)y1+HV_FF2; } else { fy1 = (float)y1+HV_FF3; ! fy2 = (float)y2+HV_FF2; } } else { // diagonal if (x1 > x2 && y1 > y2) { // ^ --- 259,272 ---- // vertical fx1 = (float)x1+HV_FF1; fx2 = fx1; if (y1 > y2) { fy1 = (float)y2+HV_FF3; ! fy2 = (float)y1+fudge2; } else { fy1 = (float)y1+HV_FF3; ! fy2 = (float)y2+fudge2; } } else { // diagonal if (x1 > x2 && y1 > y2) { // ^
*** 385,395 **** UINT vertsInBatch = min(2*(MAX_BATCH_SIZE/2), reqVerts); if (SUCCEEDED(res = EnsureCapacity(D3DPT_LINELIST, vertsInBatch))) { reqVerts -= vertsInBatch; do { x1 = ((float)*(scanlines++)) +HV_FF3; ! x2 = ((float)*(scanlines++)) +HV_FF2; y = ((float)*(scanlines++)) +HV_FF1; ADD_LINE_XYC(x1, y, x2, y, color); vertsInBatch -= 2; } while (vertsInBatch > 0); } --- 395,405 ---- UINT vertsInBatch = min(2*(MAX_BATCH_SIZE/2), reqVerts); if (SUCCEEDED(res = EnsureCapacity(D3DPT_LINELIST, vertsInBatch))) { reqVerts -= vertsInBatch; do { x1 = ((float)*(scanlines++)) +HV_FF3; ! x2 = ((float)*(scanlines++)) +fudge2; y = ((float)*(scanlines++)) +HV_FF1; ADD_LINE_XYC(x1, y, x2, y, color); vertsInBatch -= 2; } while (vertsInBatch > 0); }
*** 441,457 **** float fy1 = (float)y1; float fx2 = (float)x2; float fy2 = (float)y2; // horiz: top left - top right ! ADD_LINE_XYC(fx1+HV_FF3, fy1+HV_FF1, fx2-1.0f+HV_FF2, fy1+HV_FF1,color); // horiz: bottom left - bottom right ! ADD_LINE_XYC(fx1+1.0f+HV_FF3, fy2+HV_FF1, fx2+HV_FF2, fy2+HV_FF1,color); // vert : top right - bottom right ! ADD_LINE_XYC(fx2+HV_FF1, fy1+HV_FF3, fx2+HV_FF1, fy2-1.0f+HV_FF2,color); // vert : top left - bottom left ! ADD_LINE_XYC(fx1+HV_FF1, fy1+1.0f+HV_FF3, fx1+HV_FF1, fy2+HV_FF2,color); } return res; } HRESULT D3DVertexCacher::FillRect(int x1, int y1, int x2, int y2) --- 451,467 ---- float fy1 = (float)y1; float fx2 = (float)x2; float fy2 = (float)y2; // horiz: top left - top right ! ADD_LINE_XYC(fx1+HV_FF3, fy1+HV_FF1, fx2-1.0f+fudge2, fy1+HV_FF1,color); // horiz: bottom left - bottom right ! ADD_LINE_XYC(fx1+1.0f+HV_FF3, fy2+HV_FF1, fx2+fudge2, fy2+HV_FF1,color); // vert : top right - bottom right ! ADD_LINE_XYC(fx2+HV_FF1, fy1+HV_FF3, fx2+HV_FF1, fy2-1.0f+fudge2,color); // vert : top left - bottom left ! ADD_LINE_XYC(fx1+HV_FF1, fy1+1.0f+HV_FF3, fx1+HV_FF1, fy2+fudge2,color); } return res; } HRESULT D3DVertexCacher::FillRect(int x1, int y1, int x2, int y2)
< prev index next >