OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 // This file is auto-generated from | 5 // This file is auto-generated from |
6 // gpu/command_buffer/build_gles2_cmd_buffer.py | 6 // gpu/command_buffer/build_gles2_cmd_buffer.py |
7 // It's formatted by clang-format using chromium coding style: | 7 // It's formatted by clang-format using chromium coding style: |
8 // clang-format -i -style=chromium filename | 8 // clang-format -i -style=chromium filename |
9 // DO NOT EDIT! | 9 // DO NOT EDIT! |
10 | 10 |
(...skipping 528 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
539 } | 539 } |
540 }); | 540 }); |
541 if (n < 0) { | 541 if (n < 0) { |
542 SetGLError(GL_INVALID_VALUE, "glDeleteSamplers", "n < 0"); | 542 SetGLError(GL_INVALID_VALUE, "glDeleteSamplers", "n < 0"); |
543 return; | 543 return; |
544 } | 544 } |
545 DeleteSamplersHelper(n, samplers); | 545 DeleteSamplersHelper(n, samplers); |
546 CheckGLError(); | 546 CheckGLError(); |
547 } | 547 } |
548 | 548 |
| 549 void GLES2Implementation::DeleteSync(GLsync sync) { |
| 550 GPU_CLIENT_SINGLE_THREAD_CHECK(); |
| 551 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glDeleteSync(" << sync << ")"); |
| 552 GPU_CLIENT_DCHECK(sync != 0); |
| 553 DeleteSyncHelper(sync); |
| 554 CheckGLError(); |
| 555 } |
| 556 |
549 void GLES2Implementation::DeleteShader(GLuint shader) { | 557 void GLES2Implementation::DeleteShader(GLuint shader) { |
550 GPU_CLIENT_SINGLE_THREAD_CHECK(); | 558 GPU_CLIENT_SINGLE_THREAD_CHECK(); |
551 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glDeleteShader(" << shader << ")"); | 559 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glDeleteShader(" << shader << ")"); |
552 GPU_CLIENT_DCHECK(shader != 0); | 560 GPU_CLIENT_DCHECK(shader != 0); |
553 DeleteShaderHelper(shader); | 561 DeleteShaderHelper(shader); |
554 CheckGLError(); | 562 CheckGLError(); |
555 } | 563 } |
556 | 564 |
557 void GLES2Implementation::DeleteTextures(GLsizei n, const GLuint* textures) { | 565 void GLES2Implementation::DeleteTextures(GLsizei n, const GLuint* textures) { |
558 GPU_CLIENT_SINGLE_THREAD_CHECK(); | 566 GPU_CLIENT_SINGLE_THREAD_CHECK(); |
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
624 } | 632 } |
625 | 633 |
626 void GLES2Implementation::DetachShader(GLuint program, GLuint shader) { | 634 void GLES2Implementation::DetachShader(GLuint program, GLuint shader) { |
627 GPU_CLIENT_SINGLE_THREAD_CHECK(); | 635 GPU_CLIENT_SINGLE_THREAD_CHECK(); |
628 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glDetachShader(" << program << ", " | 636 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glDetachShader(" << program << ", " |
629 << shader << ")"); | 637 << shader << ")"); |
630 helper_->DetachShader(program, shader); | 638 helper_->DetachShader(program, shader); |
631 CheckGLError(); | 639 CheckGLError(); |
632 } | 640 } |
633 | 641 |
| 642 GLsync GLES2Implementation::FenceSync(GLenum condition, GLbitfield flags) { |
| 643 GPU_CLIENT_SINGLE_THREAD_CHECK(); |
| 644 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glFenceSync(" |
| 645 << GLES2Util::GetStringSyncCondition(condition) << ", " |
| 646 << flags << ")"); |
| 647 if (condition != 0x9117) { |
| 648 SetGLError(GL_INVALID_ENUM, "glFenceSync", "condition GL_INVALID_ENUM"); |
| 649 return 0; |
| 650 } |
| 651 if (flags != 0) { |
| 652 SetGLError(GL_INVALID_VALUE, "glFenceSync", "flags GL_INVALID_VALUE"); |
| 653 return 0; |
| 654 } |
| 655 GLuint client_id; |
| 656 GetIdHandler(id_namespaces::kSyncs)->MakeIds(this, 0, 1, &client_id); |
| 657 helper_->FenceSync(client_id); |
| 658 GPU_CLIENT_LOG("returned " << client_id); |
| 659 CheckGLError(); |
| 660 return reinterpret_cast<GLsync>(client_id); |
| 661 } |
| 662 |
634 void GLES2Implementation::FramebufferRenderbuffer(GLenum target, | 663 void GLES2Implementation::FramebufferRenderbuffer(GLenum target, |
635 GLenum attachment, | 664 GLenum attachment, |
636 GLenum renderbuffertarget, | 665 GLenum renderbuffertarget, |
637 GLuint renderbuffer) { | 666 GLuint renderbuffer) { |
638 GPU_CLIENT_SINGLE_THREAD_CHECK(); | 667 GPU_CLIENT_SINGLE_THREAD_CHECK(); |
639 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glFramebufferRenderbuffer(" | 668 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glFramebufferRenderbuffer(" |
640 << GLES2Util::GetStringFrameBufferTarget(target) << ", " | 669 << GLES2Util::GetStringFrameBufferTarget(target) << ", " |
641 << GLES2Util::GetStringAttachment(attachment) << ", " | 670 << GLES2Util::GetStringAttachment(attachment) << ", " |
642 << GLES2Util::GetStringRenderBufferTarget( | 671 << GLES2Util::GetStringRenderBufferTarget( |
643 renderbuffertarget) << ", " << renderbuffer << ")"); | 672 renderbuffertarget) << ", " << renderbuffer << ")"); |
(...skipping 812 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1456 } | 1485 } |
1457 *result = 0; | 1486 *result = 0; |
1458 helper_->IsShader(shader, GetResultShmId(), GetResultShmOffset()); | 1487 helper_->IsShader(shader, GetResultShmId(), GetResultShmOffset()); |
1459 WaitForCmd(); | 1488 WaitForCmd(); |
1460 GLboolean result_value = *result != 0; | 1489 GLboolean result_value = *result != 0; |
1461 GPU_CLIENT_LOG("returned " << result_value); | 1490 GPU_CLIENT_LOG("returned " << result_value); |
1462 CheckGLError(); | 1491 CheckGLError(); |
1463 return result_value; | 1492 return result_value; |
1464 } | 1493 } |
1465 | 1494 |
| 1495 GLboolean GLES2Implementation::IsSync(GLsync sync) { |
| 1496 GPU_CLIENT_SINGLE_THREAD_CHECK(); |
| 1497 TRACE_EVENT0("gpu", "GLES2Implementation::IsSync"); |
| 1498 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glIsSync(" << sync << ")"); |
| 1499 typedef cmds::IsSync::Result Result; |
| 1500 Result* result = GetResultAs<Result*>(); |
| 1501 if (!result) { |
| 1502 return GL_FALSE; |
| 1503 } |
| 1504 *result = 0; |
| 1505 helper_->IsSync(ToGLuint(sync), GetResultShmId(), GetResultShmOffset()); |
| 1506 WaitForCmd(); |
| 1507 GLboolean result_value = *result != 0; |
| 1508 GPU_CLIENT_LOG("returned " << result_value); |
| 1509 CheckGLError(); |
| 1510 return result_value; |
| 1511 } |
| 1512 |
1466 GLboolean GLES2Implementation::IsTexture(GLuint texture) { | 1513 GLboolean GLES2Implementation::IsTexture(GLuint texture) { |
1467 GPU_CLIENT_SINGLE_THREAD_CHECK(); | 1514 GPU_CLIENT_SINGLE_THREAD_CHECK(); |
1468 TRACE_EVENT0("gpu", "GLES2Implementation::IsTexture"); | 1515 TRACE_EVENT0("gpu", "GLES2Implementation::IsTexture"); |
1469 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glIsTexture(" << texture << ")"); | 1516 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glIsTexture(" << texture << ")"); |
1470 typedef cmds::IsTexture::Result Result; | 1517 typedef cmds::IsTexture::Result Result; |
1471 Result* result = GetResultAs<Result*>(); | 1518 Result* result = GetResultAs<Result*>(); |
1472 if (!result) { | 1519 if (!result) { |
1473 return GL_FALSE; | 1520 return GL_FALSE; |
1474 } | 1521 } |
1475 *result = 0; | 1522 *result = 0; |
(...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1639 return; | 1686 return; |
1640 } | 1687 } |
1641 if (height < 0) { | 1688 if (height < 0) { |
1642 SetGLError(GL_INVALID_VALUE, "glScissor", "height < 0"); | 1689 SetGLError(GL_INVALID_VALUE, "glScissor", "height < 0"); |
1643 return; | 1690 return; |
1644 } | 1691 } |
1645 helper_->Scissor(x, y, width, height); | 1692 helper_->Scissor(x, y, width, height); |
1646 CheckGLError(); | 1693 CheckGLError(); |
1647 } | 1694 } |
1648 | 1695 |
| 1696 void GLES2Implementation::ShaderSource(GLuint shader, |
| 1697 GLsizei count, |
| 1698 const GLchar* const* str, |
| 1699 const GLint* length) { |
| 1700 GPU_CLIENT_SINGLE_THREAD_CHECK(); |
| 1701 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glShaderSource(" << shader << ", " |
| 1702 << count << ", " << static_cast<const void*>(str) << ", " |
| 1703 << static_cast<const void*>(length) << ")"); |
| 1704 GPU_CLIENT_LOG_CODE_BLOCK({ |
| 1705 for (GLsizei ii = 0; ii < count; ++ii) { |
| 1706 if (str[ii]) { |
| 1707 if (length && length[ii] >= 0) { |
| 1708 const std::string my_str(str[ii], length[ii]); |
| 1709 GPU_CLIENT_LOG(" " << ii << ": ---\n" << my_str << "\n---"); |
| 1710 } else { |
| 1711 GPU_CLIENT_LOG(" " << ii << ": ---\n" << str[ii] << "\n---"); |
| 1712 } |
| 1713 } else { |
| 1714 GPU_CLIENT_LOG(" " << ii << ": NULL"); |
| 1715 } |
| 1716 } |
| 1717 }); |
| 1718 if (count < 0) { |
| 1719 SetGLError(GL_INVALID_VALUE, "glShaderSource", "count < 0"); |
| 1720 return; |
| 1721 } |
| 1722 // Compute the total size. |
| 1723 base::CheckedNumeric<size_t> total_size = count; |
| 1724 total_size += 1; |
| 1725 total_size *= sizeof(GLint); |
| 1726 if (!total_size.IsValid()) { |
| 1727 SetGLError(GL_INVALID_VALUE, "glShaderSource", "overflow"); |
| 1728 return; |
| 1729 } |
| 1730 size_t header_size = total_size.ValueOrDefault(0); |
| 1731 std::vector<GLint> header(count + 1); |
| 1732 header[0] = static_cast<GLint>(count); |
| 1733 for (GLsizei ii = 0; ii < count; ++ii) { |
| 1734 GLint len = 0; |
| 1735 if (str[ii]) { |
| 1736 len = (length && length[ii] >= 0) |
| 1737 ? length[ii] |
| 1738 : base::checked_cast<GLint>(strlen(str[ii])); |
| 1739 } |
| 1740 total_size += len; |
| 1741 total_size += 1; // NULL at the end of each char array. |
| 1742 if (!total_size.IsValid()) { |
| 1743 SetGLError(GL_INVALID_VALUE, "glShaderSource", "overflow"); |
| 1744 return; |
| 1745 } |
| 1746 header[ii + 1] = len; |
| 1747 } |
| 1748 // Pack data into a bucket on the service. |
| 1749 helper_->SetBucketSize(kResultBucketId, total_size.ValueOrDefault(0)); |
| 1750 size_t offset = 0; |
| 1751 for (GLsizei ii = 0; ii <= count; ++ii) { |
| 1752 const char* src = |
| 1753 (ii == 0) ? reinterpret_cast<const char*>(&header[0]) : str[ii - 1]; |
| 1754 base::CheckedNumeric<size_t> checked_size = |
| 1755 (ii == 0) ? header_size : static_cast<size_t>(header[ii]); |
| 1756 if (ii > 0) { |
| 1757 checked_size += 1; // NULL in the end. |
| 1758 } |
| 1759 if (!checked_size.IsValid()) { |
| 1760 SetGLError(GL_INVALID_VALUE, "glShaderSource", "overflow"); |
| 1761 return; |
| 1762 } |
| 1763 size_t size = checked_size.ValueOrDefault(0); |
| 1764 while (size) { |
| 1765 ScopedTransferBufferPtr buffer(size, helper_, transfer_buffer_); |
| 1766 if (!buffer.valid() || buffer.size() == 0) { |
| 1767 SetGLError(GL_OUT_OF_MEMORY, "glShaderSource", "too large"); |
| 1768 return; |
| 1769 } |
| 1770 size_t copy_size = buffer.size(); |
| 1771 if (ii > 0 && buffer.size() == size) |
| 1772 --copy_size; |
| 1773 if (copy_size) |
| 1774 memcpy(buffer.address(), src, copy_size); |
| 1775 if (copy_size < buffer.size()) { |
| 1776 // Append NULL in the end. |
| 1777 DCHECK(copy_size + 1 == buffer.size()); |
| 1778 char* str = reinterpret_cast<char*>(buffer.address()); |
| 1779 str[copy_size] = 0; |
| 1780 } |
| 1781 helper_->SetBucketData(kResultBucketId, offset, buffer.size(), |
| 1782 buffer.shm_id(), buffer.offset()); |
| 1783 offset += buffer.size(); |
| 1784 src += buffer.size(); |
| 1785 size -= buffer.size(); |
| 1786 } |
| 1787 } |
| 1788 DCHECK_EQ(total_size.ValueOrDefault(0), offset); |
| 1789 helper_->ShaderSourceBucket(shader, kResultBucketId); |
| 1790 helper_->SetBucketSize(kResultBucketId, 0); |
| 1791 CheckGLError(); |
| 1792 } |
| 1793 |
1649 void GLES2Implementation::StencilFunc(GLenum func, GLint ref, GLuint mask) { | 1794 void GLES2Implementation::StencilFunc(GLenum func, GLint ref, GLuint mask) { |
1650 GPU_CLIENT_SINGLE_THREAD_CHECK(); | 1795 GPU_CLIENT_SINGLE_THREAD_CHECK(); |
1651 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glStencilFunc(" | 1796 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glStencilFunc(" |
1652 << GLES2Util::GetStringCmpFunction(func) << ", " << ref | 1797 << GLES2Util::GetStringCmpFunction(func) << ", " << ref |
1653 << ", " << mask << ")"); | 1798 << ", " << mask << ")"); |
1654 helper_->StencilFunc(func, ref, mask); | 1799 helper_->StencilFunc(func, ref, mask); |
1655 CheckGLError(); | 1800 CheckGLError(); |
1656 } | 1801 } |
1657 | 1802 |
1658 void GLES2Implementation::StencilFuncSeparate(GLenum face, | 1803 void GLES2Implementation::StencilFuncSeparate(GLenum face, |
(...skipping 1522 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3181 | 3326 |
3182 void GLES2Implementation::BlendBarrierKHR() { | 3327 void GLES2Implementation::BlendBarrierKHR() { |
3183 GPU_CLIENT_SINGLE_THREAD_CHECK(); | 3328 GPU_CLIENT_SINGLE_THREAD_CHECK(); |
3184 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glBlendBarrierKHR(" | 3329 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glBlendBarrierKHR(" |
3185 << ")"); | 3330 << ")"); |
3186 helper_->BlendBarrierKHR(); | 3331 helper_->BlendBarrierKHR(); |
3187 CheckGLError(); | 3332 CheckGLError(); |
3188 } | 3333 } |
3189 | 3334 |
3190 #endif // GPU_COMMAND_BUFFER_CLIENT_GLES2_IMPLEMENTATION_IMPL_AUTOGEN_H_ | 3335 #endif // GPU_COMMAND_BUFFER_CLIENT_GLES2_IMPLEMENTATION_IMPL_AUTOGEN_H_ |
OLD | NEW |